使用活动的admin gem在rails上的ruby中关联过滤

时间:2013-05-18 21:24:08

标签: ruby-on-rails-3 activeadmin model-associations

我有两种模式:登录和帐户

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)

2 个答案:

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