我的应用程序在 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 对象。
有什么方法可以在不重新加载对象的情况下做到这一点?