我使用ActiveRecord范围的活动管理员。但是,我在添加范围时遇到了问题。
运行ruby 2.2.1p85(2015-02-26修订版49769)[x86_64-linux]和 Rails 4.2.5.1
#app/model/accounts.rb
class Account < ActiveRecord::Base
searchkick
belongs_to :program
belongs_to :insurance
has_many :notes
scope :program_name, -> (program) {where(program_name: adult) }
validates :first_name, :last_name, :address, :phone, presence: true
validates :phone, format: { with: /\A\d{3} \d{3}-\d{4}\z/,
message: "must be in the format 123 456-7890" }
end
我希望能够在app / admin / account.rb
中使用此功能#app/admin/account.rb
ActiveAdmin.register Account do
menu :priority => 2
permit_params :first_name, :last_name, :return_client, :program_id, :insurance_id, :address, :phone
index do
column :first_name
column :last_name
column :address
column :phone
column :created_at
column :return_client
column :program
column :insurance
actions
end
scope :all, :default => true
scope :adult, default: true do |accounts|
accounts.program_name('adult')
end
end
我厌倦了使用它有无阻挡。我想要&#34;节目的总数&#34;在该范围内作为最终结果。
答案 0 :(得分:0)
您不能拥有两个默认范围,并且scope :all
是不必要的,因此请将其删除。
你有这个看起来很好的范围
scope :program_name, -> (program) {where(program_name: adult) }
你说那个
我希望能够在app / admin / account.rb
中使用此功能
但你实际上并没有使用它。而是试图使用
scope :adult, default: true do |accounts|
accounts.program_name('adult')
end
所以只需添加
scope :program_name
但你的问题似乎还有你要做的其他事情
我希望该范围内“程序”的总数作为最终结果。
在那个意义上,我认为你可能会误解scopes实际上是如何使用的。{/ p>