我有两种模式:登录和帐户
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)
答案 0 :(得分:1)
如果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
答案 1 :(得分: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