2

ログインとアカウントの 2 つのモデルがあります。

class Login
  belongs_to :account
  attr_accessible: first_name, primary_admin # primary_admin is boolean
end

class Account
 has_many: logins

 def primary_admin
  @primary_admin ||= self.logins.find { |l| l.primary_admin }
 end
end

そのため、レジュームでは、アカウントには多くのログインがありますが、primary_admin = true のログインは 1 つだけです。アカウントのフィルターで、そのログイン (primary_admin = true のログイン) を検索したいのですが、ログインの first_name を使用しています。

app/admin/account.rb でアクティブな管理者を使用すると、次のようなものがあります

filter :primary_admin, as: :string

しかし、明らかに機能していません。事前に感謝します。

データベース スキーマは次のとおりです。

ログイン

id             :integer(4)      not null, primary key
email          :string(255)     default(""), not null
first_name     :string(255)
last_name      :string(255)
primary_admin  :boolean(1)
account_id     :integer(4)

アカウント

id              :integer(4)      not null, primary key
name            :string(255)
4

2 に答える 2

2

primary_admin が文字列フィールドの場合は、これを試してください

ActiveAdmin.register Account do
  filter :primary_admin, as: => :string
end

ActiveAdmin.register Login do
  filter :account_primary_admin, as: => :string
end

または、primary_admin がブール値フィールドの場合はこれを試してください

ActiveAdmin.register Account do
  filter :primary_admin, :as => :select
end

ActiveAdmin.register Login do
  filter :account_primary_admin, :as => :select
end

これを削除する必要があるかもしれません

def primary_admin
  @primary_admin ||= self.logins.find { |l| l.primary_admin }
end
于 2013-05-19T06:24:46.297 に答える
0

フィルター ボタンを使用して primary_admin を見つけるために試行できるその他のこと

#model/account.rb
scope :primary, where(:login_id => Login.where(:primary => true))

#admin/accounts.rb
scope :primary

また

#model/login.rb
scope :primary, where(:primary_admin => true)

#admin/logins.rb
scope :primary
于 2013-05-20T07:47:43.330 に答える