活动记录关联 - 错误w has_many:通过关联?

时间:2017-07-30 01:30:43

标签: ruby-on-rails activerecord ruby-on-rails-5

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

我做错了什么?

由于

2 个答案:

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