活动管理员范围不工作1.0.0.pre2

时间:2016-01-28 15:38:40

标签: ruby-on-rails ruby activeadmin

我使用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;在该范围内作为最终结果。

1 个答案:

答案 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>