如何在Rails中的两个表之间进行连接,返回两个表的数据

时间:2011-11-11 22:19:29

标签: ruby-on-rails ruby database join helper

我正在尝试加入两个表:RoomsRoom_Types(已经有关系)。问题是,我正在尝试做类似的事情:

room = Room.all :conditions => ['rooms.id = ?', @room_id],
                :joins      => :room_type

room.to_json

..而且这个JSON正被发送到我的视野。

但是,JSON只显示Room表的字段,不包括Room_Type字段,我需要这个JSON中的两个表字段。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:1)

:joins仅执行JOIN。与在SQL中一样,这不会将JOINed表的列添加到结果中。如果你想这样做,你应该使用:include代替:

rooms = Room.all :conditions => [ 'rooms.id = ?', @room_id ],
                 :include    => :room_type
rooms.to_json

或者,在Rails 3中用语:

rooms = Room.where(:id => @room_id).include(:room_type).all
rooms.to_json

答案 1 :(得分:0)

Room.joins(:room_type).where(:id => @room_id).select('room_types.foo as foo, room_types.bar as bar')