В одном из моих проектов RoR я использую ActiveAdmin (1.4.3) и Discard gems.
Я создал две пользовательские области, подобные этой:
scope ('Kept') { |scope| scope.kept }
scope ('Discarded') { |scope| scope.discarded }
Я хочу установить один из них ('Kept') в качестве области по умолчанию, которая будет применяться, когда пользователь посещает страницу индекса для ресурса (и мне не нравится идея добавления default_scope в моя модель)
Вот фрагмент из Документация активного администратора :
scope :all, default: true
# assumes the model has a scope called ':active'
scope :active
# renames model scope ':leaves' to ':subcategories'
scope "Subcategories", :leaves
# Dynamic scope name
scope ->{ Date.today.strftime '%A' }, :published_today
# custom scope not defined on the model
scope("Inactive") { |scope| scope.where(active: false) }
# conditionally show a custom controller scope
scope "Published", if: -> { current_admin_user.can? :manage, Posts } do |posts|
posts.published
end
Это показывает, что есть необязательный аргумент default
, который, на самом деле, работает как предназначенный для простых областей действия с символом.
Я пытался добавить это в свою пользовательскую область следующим образом:
scope ('Kept', default: true) { |scope| scope.kept }
но я получаю синтаксические ошибки.
похоже, что он работает только для областей с символом, а не со строкой и необязательным блоком. Есть ли обходной путь для этого?