我不太清楚怎么说这个,但我会试一试。
基本上我有两个模型:消息和事件。
消息belongs_to事件和事件has_many消息。
当我打电话时:
Event.first.messages
它产生这个输出:
SELECT "messages".* FROM "messages" WHERE "messages"."event_id" = 1
我希望能够保持两者之间的关联,但是在has_many等式中添加另一列,以便生成的SQL类似于:
SELECT "messages".* FROM "messages" WHERE "messages"."event_id" = 1 OR "messages"."type_id" = 4
Message和Event表都包含type_id列。
这可能吗?
答案 0 :(得分:1)
您无法进行纯ActiveRecord OR查询
解决此问题的其他方法
使用SQL字符串作为参数:
Message.where("event_id = ? or type_id = ?", Event.first.id, 4)
制作2个查询,然后添加它们:
event_messages = Event.first.messages
type_messages = Message.where(:type_id => 4)
all_messages = event_messages + type_messages
原始SQL:
How to execute a raw update sql with dynamic binding in rails
答案 1 :(得分:0)
是的,可以通过使用
Event.first.messages.where(:type_id => 4)
试试吧
答案 2 :(得分:0)
试试这个
Event.first.find(:all, :conditions => ["where type_id = ? or event_id = ?", 4, 1])