2

我有 3 个模型:用户、学校和申请人。

一个用户has_many :schools、一个学校has_many :applicantsbelongs_to :user一个申请人belongs_to :school

我希望能够列出属于特定用户的任何学校的申请人。我想我应该可以做到

current_user.schools.applicants.paginate(page: params[:page])

这不起作用,因为它给出了这个错误:

undefined method `applicants' for #<ActiveRecord::Relation:0x007fb9da274110>

如何访问这些申请人?

4

2 回答 2

2

你不能has_many像那样链接关联。在用户模型上创建has_many :through关联:

# app/models/user.rb
has_many :applicants, :through => :schools

然后你可以打电话

current_user.applicants.paginate(page: params[:page])

来自ActiveRecord 关联指南

has_many :through 关联对于通过嵌套的 has_many 关联设置“快捷方式”也很有用。[...]

于 2012-11-06T16:25:11.383 回答
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])
于 2012-11-06T16:24:38.097 回答