我有3个模特:用户,学校和申请人。
用户has_many :schools
,学校has_many :applicants
和belongs_to :user
以及申请人belongs_to :school
。
我希望能够列出属于特定用户的任何学校的申请人。我以为我应该能够用
做到这一点current_user.schools.applicants.paginate(page: params[:page])
这不起作用,因为它给出了这个错误:
undefined method `applicants' for #<ActiveRecord::Relation:0x007fb9da274110>
我如何访问这些申请人?
答案 0 :(得分:2)
你不能像这样链接has_many
个关联。在用户模型上创建has_many :through
关联:
# app/models/user.rb
has_many :applicants, :through => :schools
然后你可以打电话
current_user.applicants.paginate(page: params[:page])
来自guide on ActiveRecord associations:
has_many:through关联对于通过嵌套的has_many关联设置“快捷方式”也很有用。 [...]
答案 1 :(得分:0)
你不能这样做。只要前一个关联解析为单个记录,关联就可以链接(即,您可以链接belongs_to.belongs_to.has_many
,但永远不会has_many.has_many
- 这就是has_many :through
的用途。
如果您想要申请人,您需要实际选择申请人:
Applicant.where(school_id: current_user.schools.pluck(:id)).paginate(page: params[:page])