2013-06-09 4 views
0

Вот три модели:Rails: получить все поля из нескольких моделей от присоединиться

class Swimming::Classschedule < ActiveRecord::Base 
    belongs_to :swimming_classtimes ,:class_name=>'Swimming::Classtime',:foreign_key => "classtime_id" 
    attr_accessible :id,:coach_id, :level_id, :note, :classtime_id 
end 


class Swimming::Classtime < ActiveRecord::Base 
    has_many :swimming_classschedules,:class_name=>'Swimming::Classschedule' 
    belongs_to :swimming_timeblocks ,:class_name=>'Swimming::Timeblock',:foreign_key => "timeblock_id"  
    attr_accessible :date, :end, :start,:timeblock_id,:id 
end 


class Swimming::Timeblock < ActiveRecord::Base 
    has_many :swimming_classtimes,:class_name=>'Swimming::Classtime' 
    has_many :swimming_classschedules,:class_name=>'Swimming::Classschedule',:through => :swimming_classtimes 
    attr_accessible :name,:id 
end 

И я пытаюсь соединить эти три модели

schedules = Swimming::Classschedule.joins(:swimming_classtimes=>:swimming_timeblocks).select("swimming_classtimes.*,swimming_timeblocks.*,swimming_classschedules.*").where("swimming_classtimes.date >= '2013-06-01' and swimming_classtimes.date <= '2013-06-08' ") 

Вот результат возвращается

=> [#<Swimming::Classschedule id: 7, coach_id: nil, level_id: nil, note: nil, created_at: "2013-06-08 23:24:31", updated_at: "2013-06-08 23:24:31", lesson_id: 1, classtime_id: 24, lane_id: nil, program_id: nil, classtype_id: nil>] 

Почему он только вернул поля из плавательных клубов. Я ожидал вернуть все поля из трех моделей

"swimming_classtimes.*,swimming_timeblocks.*,swimming_classschedules.*" 

Что не хватает?

ответ

1

Плавание :: Classschedule имеет атрибуты, определенные только для столбцов db. Вы можете получить доступ к другим полей с помощью

объекта [: имя_столбец]

например:

schedules.first[:timeblock_id] 
Смежные вопросы