以下是如何加入两个模型
User.where(:id => 1).joins(:posts)
但是如何使用module / namspace加入两个模型
@schedules= Swimming::Classschedule.joins(:Swimming::Slot).where(:date => @date)
似乎无法正常工作(带错误信息)
:Swimming is not a class/module
更新
我已更新到 @ schedules = Swimming :: Classschedule.joins(:swimming_slots).where(:date => @date)
我确实有这张表
create_table :swimming_classschedules do |t|
t.integer :slot_id
t.integer :coach_id
t.integer :level_id
t.string :note
t.timestamps
end
create_table :swimming_slots do |t|
t.string :date
t.string :start
t.string :end
t.timestamps
end
我得到了这个错误
Association named 'swimming_slots' was not found; perhaps you misspelled it?
更新2
将此行添加到Swimming :: Classschedule模块
belongs_to:swimming_slots,:class_name =>'Swimming :: Slot',:foreign_key => “SLOT_ID”
和
将联接更改为
@schedules= Swimming::Classschedule.joins(:swimming_slots).where(:swimming_slots =>{:date => @date})
现在可行了
答案 0 :(得分:2)
您将关联名称传递给联接。例如,如果您有像
这样的关联has_many :swimming_slots, class_name: 'Swimming::Classschedule'
然后你传递swimming_slots
并且rails会为你做连接。
User.joins(:swimming_slots)
更新:
如果slot_id
引用swimming_slots
表中的记录,则应该有类似
belongs_to :slot, class_name: 'Swimming::Slot'
在班级时间表模型中。如果你有,你应该能够做到
Swimming::Classschedule.joins(:slot)