rails与模块名称连接
以下是如何加入两个模型
User.where(:id => 1).joins(:posts)
但是如何使用module / namspace连接两个模型
@schedules= Swimming::Classschedule.joins(:Swimming::Slot).where(:date => @date)
似乎无法正常工作(带错误信息)
:Swimming is not a class/module
UPDATE
我已更新到@ 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})
现在它有效
您将关联名称传递给联接。 例如,如果您有类似的关联
has_many :swimming_slots, class_name: 'Swimming::Classschedule'
然后你通过swimming_slots
和rails将为你做连接。
User.joins(:swimming_slots)
更新:
如果slot_id
引用了slot_id
表中的记录,你应该有类似的东西
belongs_to :slot, class_name: 'Swimming::Slot'
在您的class级时间表模型中。 如果你有,你应该能够做到
Swimming::Classschedule.joins(:slot)