【发布时间】:2013-07-29 08:04:21
【问题描述】:
我的应用程序在 Rails 2 上。
我有 2 个模型,由 has_and_belongs_to_many 关系加入:Message 和 Conversation。
所以我有 3 张桌子,messages、conversations 和 conversations_messages。
是否可以在一个唯一查询中同时加载对象Message 和Conversation,而不使用:include 选项? :include 选项是不可能的,因为我的查询依赖于一些外部参数。
例子:
我可以从 Message 中查询,每行有几个 (Message,Conversation)
messages = Message.find(:all,
:select => "messages.*, conversations.*",
:conditions => some_conditions_depending_of_external_variables
:group => "messages.id"
)
生成的表格如下所示:
`messages`.id | `messages`.field | `conversations`.id | `conversations`.field
--------------+------------------+--------------------+------------------
1 | ... | 10 | ...
--------------+------------------+--------------------+------------------
2 | ... | 15 | ...
--------------+------------------+--------------------+------------------
3 | ... | 10 | ...
--------------+------------------+--------------------+------------------
4 | ... | 20 | ...
在此查询之后,我的变量 messages 包含一组 AR 消息元素,但对话字段未作为 AR 对话加载。
我希望能够调用 message.linked_conversation 来进行同一行的对话,作为 AR 对象。
有没有什么方法可以在不重新加载对象的情况下做到这一点?
【问题讨论】:
-
不是你要找的,而是在两个查询中完成,而不使用
includes和重新加载消息:stackoverflow.com/questions/12561688/…
标签: ruby-on-rails rails-activerecord ruby-on-rails-2