我有这个型号:
class Student < ActiveRecord::Base has_many :tickets has_many :movies,through: :tickets end class Movie < ActiveRecord::Base has_many :tickets,dependent: :destroy has_many :students,through: :tickets belongs_to :cinema end class Ticket < ActiveRecord::Base belongs_to :movie,counter_cache: true belongs_to :student end class Cinema < ActiveRecord::Base has_many :movies,through: :movies has_many :schools,dependent: :destroy has_many :companies,through: :yard_companies end class School < ActiveRecord::Base belongs_to :company belongs_to :student belongs_to :cinema,counter_cache: true end class Teacher < ActiveRecord::Base belongs_to :movie,counter_cache: true belongs_to :company end class Contract < ActiveRecord::Base belongs_to :company belongs_to :student end class Company < ActiveRecord::Base has_many :teachers has_many :movies,through: :teachers has_many :contracts has_many :students,through: :contracts end
如果我在movies_controller.rb中写这个:
@students = @ movie.cinema.companies.students.all
我有这个错误:
未定义的方法’学生’为#Company :: ActiveRecord_Associations_CollectionProxy:0x00000007f13d88>
如果相反我写这个:
@students = @ movie.cinema.companies.find(6).students.all
它在我的select_collection中显示了正确的学生.
如何更好地理解这个过程?
更新:
我需要收集这部电影电影公司中每个学生的收藏.
怎么写?