1

我有一个模型,机构,它has_many :users。用户可以拥有角色-:agent、:admin,所以我创建了方法来提取 @agency.users 的子集

Agency.rb
def agents
  users.with_roles(:agent, self)
end

我想要的是,实际上,f.association :agents, collection: User.all允许代理机构雇用任何人。不出所料,尝试这样做会得到“关联:未找到代理”。将其更改为f.association @agency.agents, collection: User.all也失败了"Association #<ActiveRecord::AssociationRelation .....not found"

这个问题来看,simpleform 似乎无法处理 AssociationRelation,而只能处理 Association。

我可以更改我的方法以仅返回一个关联吗?我可以改变我的简单形式来处理 AssociationRelation 吗?

4

1 回答 1

2

所以,结果证明这个解决方案有点老套,但它似乎有效:

确实需要它是一个关联,而不是方法,但事实证明我可以确定我的关联范围。

Agency.rb
has_many :bridge_roles, -> {where(resource_type: 'Agency')}, class_name: 'Role', foreign_key: :resource_id
has_many :agents, -> {where('roles.name=?', 'agent')}, class_name: 'User', through: :bridge_roles, source: :users

关键是我明确创建了桥以使关联了解 rolify 角色。通过它,我可以访问我关心的用户集。

于 2014-05-02T18:01:45.653 回答