ruby 与多个型号有很多关联

vulvrdjw  于 2023-08-04  发布在  Ruby
关注(0)|答案(2)|浏览(101)

有三种模型用户表属性是name:string,age:integer,kind:integer。注册表属性为user_id:integer、tutor_id:integer、event_id:integer、favorite:boolean。事件表属性为name:string。这里的用户类型可以是student、tutor或tutor_student

# user.rb
    class User < ApplicationRecord
      enum kind: { student: 0, tutor: 1, tutor_student: 2 }
    
      has_many :registrations
      has_many :tutors, through: :registrations
      has_many :favorites, -> { where(registrations: { favorite: true }) }, through: :tutors, source: :event, class_name: 'Event'
    
    end
    
    # Event.rb
    class Event < ApplicationRecord
      has_many :registrations, foreign_key: :program_id
      has_many :users, through: :registrations
      has_many :tutors, through: :registrations
    end
    
    # registration.rb
    class Registration < ApplicationRecord
      belongs_to :user
      belongs_to :tutor, class_name: 'User'
      belongs_to :event
    end

字符串
问题是
我试图通过有许多关系,如上面的虚拟数据样本,我给了用户事件最喜欢的导师

user.tutors.favorites


但我得到了这个错误

undefined method `favorites' for #<User::ActiveRecord_Associations_CollectionProxy:0x00007f04e8a7b540>


谁能帮我纠正一下我的联想。

acruukt9

acruukt91#

关于你得到的错误,你得到undefined method的原因是因为从技术上讲,你是在一个用户集合上调用.favorites,而不是单个用户。
您可以通过使用以下命令访问用户导师的收藏夹:

user.tutors.joins(:registrations).where(registrations: {favorite: true})

字符串

l7mqbcuq

l7mqbcuq2#

也许我完全误解了你的问题,但是:第一个月

相关问题