2013-03-09 103 views
2

下面是如何加入两个型号导轨和模块名称加入

User.where(:id => 1).joins(:posts) 

但如何将两个型号的模块/ namspace

@schedules= Swimming::Classschedule.joins(:Swimming::Slot).where(:date => @date) 

似乎不能正常工作(错误消息)

:Swimming is not a class/module 

UPDATE

我已经更新到 @时间表=游泳:: Classschedule.joins(:swimming_slots)。凡(:日期=> @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 

Howcome我得到这个错误

Association named 'swimming_slots' was not found; perhaps you misspelled it? 

更新2

添加该L INE到游泳:: Classschedule模块

belongs_to的:swimming_slots,:CLASS_NAME => '游泳::插槽',:foreign_key => “SLOT_ID”

变化联接到

@schedules= Swimming::Classschedule.joins(:swimming_slots).where(:swimming_slots =>{:date => @date}) 

现在它的工作原理

+0

'':Swimming :: Slot'不是一个有效的Ruby表达式。如果你想要一个模块,它是'Swimming :: Slot'。如果你想要一个符号,它是':“Swimming :: Slot”'。 – sawa 2013-03-09 04:54:05

回答

2

您传递关联名称进行连接。例如,如果你有一个像

has_many :swimming_slots, class_name: 'Swimming::Classschedule' 

关联,然后你通过swimming_slots和铁轨也将这样做加入你。

User.joins(:swimming_slots) 

UPDATE:

如果slot_id是指在swimming_slots表中的记录,你应该有类似

belongs_to :slot, class_name: 'Swimming::Slot' 
下上课的模型

。如果你有,你应该可以做

Swimming::Classschedule.joins(:slot) 
+0

我已更新我的帖子。 – wwli 2013-03-09 05:09:36

+0

更新了我的答案 – jvnill 2013-03-09 05:53:02

相关问题