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的登录名。在帐户的过滤器中,我想搜索该登录名(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 回答