2013-03-09 102 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

相關問題