我的應用程序是on Rails的2加載多個ActiveRecord的模型
我有2種型號,由has_and_belongs_to_many
關係加入:Message
和Conversation
。 所以我有3個表,messages
,conversations
和conversations_messages
。
是否可以在不使用:include
選項的情況下加載同一個唯一查詢對象Message
和Conversation
? :include
選項是不可能的,因爲我的查詢取決於一些外部參數。
實施例:
我可以從消息做一個查詢有每行
messages = Message.find(:all,
:select => "messages.*, conversations.*",
:conditions => some_conditions_depending_of_external_variables
:group => "messages.id"
)
所得表看起來像一對夫婦(Message
,Conversation
):
`messages`.id | `messages`.field | `conversations`.id | `conversations`.field
--------------+------------------+--------------------+------------------
1 | ... | 10 | ...
--------------+------------------+--------------------+------------------
2 | ... | 15 | ...
--------------+------------------+--------------------+------------------
3 | ... | 10 | ...
--------------+------------------+--------------------+------------------
4 | ... | 20 | ...
後此查詢,我的變量messages
包含一組AR消息元素,但會話字段未作爲AR對話加載。
我希望能夠調用message.linked_conversation將同一行的對話作爲一個AR對象。
是否有任何方法可以在不重新加載對象的情況下執行此操作?
不完全是你在找什麼,而是在兩個查詢中做到這一點,而不使用'包括'和重新加載的消息:http://stackoverflow.com/questions/12561688/how-to-eager-load-association-for-an-array-of-model-records – lulalala