class User < ApplicationRecord
has_many :user_positions
has_many :job_titles, through: :user_positions
class JobTitle < ApplicationRecord
has_many :user_positions
has_many :users, through: :user_positions
class UserPosition < ApplicationRecord
belongs_to :user
belongs_to :job_title
鉴于上述模型ActiveRecord关联,我正在尝试查询JobTitle,然后返回具有该JobTitle的所有用户,如下所示:
JobTitle.where(id: 6).users
这是错误的
undefined method `users' for #<JobTitle::ActiveRecord_Relation
我做错了什么?
由于
答案 0 :(得分:1)
使用find_by
find
find
如果没有此ID的记录,则RecordNotFound
加注{:1}}:
JobTitle.find_by(id: 6).users
这就是has_many
的工作原理:一个模型有许多其他模型。 Where
会返回一个关系,例如JobTitle.where('id > ?', 1)
将返回一组记录。在你的情况下,where
返回一个记录的关系,就像一个包含一个元素的数组。
答案 1 :(得分:1)
代码 JobTitle.where(id:6)会返回一组记录,最好的方法是使用查找方法。
试试这个:
JobTitle.find(6).users
或者
JobTitle.where(id: 6).first.users