1
对不起,如果我使用了错误的术语,我仍然对rails有所了解。Rails:将值添加到Activerecord结果
问题:我在一个变量中检索一个activerecord关系,我想在数组中的每个项中添加更多的键/值对,这样他们都可以在视图中轻松访问。我该怎么做呢?
控制器
def index
@rooms = Room.all.reverse
@sessions = Session.all
##returns => [#<Session id: 4, user_ip: "127.0.0.1", user_token: "", room_session: "", position: 2 ...>], #<Session id: 3, ...>]
@sessions.map do |k, v|
##Add the room associated with each session & other k/v pairs
end
##want to return => [#<Session id: 4, room: 'Marvin', spaghetti: 'monster' (etc...), user_ip: "127.0.0.1", user_token: "", room_session: "", position: 2 ...>], #<Session id: 3, ...>]
end
end
查看
- @sessions.each do |session|
%tr
%td= session.topic_id
%td= session.room
%td= session.spaghetti
编辑: 我希望能够加入像 '面条'=> '怪物' 和信息任意值从关系如Session.room
这样做的最好方法是什么?
谢谢!
其他属性(除了房间)是否也是主动记录关系还是他们是任意的?要添加房间,来自视图的session.room呼叫应该已经分配了相关的房间(假设每个会话只有一个房间,否则你会想要做session.room.first或类似的事情)。为了避免N +1,你的@session查找应该是Session.includes(:room).all。 – 2013-04-04 05:56:57
谢谢你的评论。我更新了我的问题。一个简单的问题,当我做Session.includes(:room).all.to_a时,它不包括任何房间的列,但我可以做Session.first.room或session.includes(:room).first.room并获得与该会话相关的房间。任何想法如何让它成为原来的返回数组的一部分?再次感谢。 – 2013-04-04 17:22:52