DeviseとRolifyを使っています。
従業員belongs_to User
とユーザーhas_one :employee
。User モデルにはrolify
.
Rolifyのおかげで、 というテーブルがありますuser_roles
。
次のコードは正常に動作します。
<% if current_user.has_role? :super %>
これは、従業員ではなくユーザーに関連付けたい場合に機能します。
:collection => User.with_role(:agent)
ここで、「エージェント」の役割を持つ従業員の選択を含むフォームに関連付けを作成したいと思います。
次の試行は機能しません。
<%= f.association :employee, :collection => Employee.user.with_role(:agent), :label_method => :employee_full_name, :label => 'Agent' %>
上記のものはこのエラーを与えます:
undefined method `user' for #<Class:0x007fac48215ee8>
これも機能しません:
<%= f.association :employee, :collection => User.with_role(:agent).employee.id, :label_method => :employee_full_name, :label => 'Agent' %>
何がうまくいくでしょうか?
助けてくれてありがとう!
更新1
以下は、関連付けられた役割を持つ従業員のリストを表示するために機能します。
<td><%= employee.user.roles.first.name %></td>
更新2
employee.user.roles.first.name
従業員の役割名を教えてくれるので、これを試しました:
Employee.where('employee.user.roles.first.name = ?', 'agent')
しかし、PGエラーが発生します=
PG::Error: ERROR: improper qualified name (too many dotted names): employee.user.roles.first.name