我有两个模型:登录和帐户
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 的登录名),但使用登录名的名字。
在 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)
最佳答案
如果 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 是 bool 字段,请尝试此操作
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
关于ruby-on-rails-3 - 使用事件管理 gem 按 ruby on Rails 中的关联进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629101/