我有以下查询:
user.all_memberships.where("user_id = ? OR invited_id = ?", user2.id, user2.id)
这是我membership
模型的样子:
#<Membership id: 4, family_tree_id: 3, user_id: 1, created_at: "2015-10-23 20:33:41", updated_at: "2015-10-23 20:33:41", relation: nil, invited_id: nil>
我想要检查的查询是relation != nil
....但不确定如何在传入引号中的where
子句的SQL中表示。
换句话说,我希望它能够检查user2.id
或user_id
列中是否存在invited_id
。但是...... relation
也必须是零。
我该怎么做?
修改1
根据Blindy的建议,当我进行以下查询时:
user.all_memberships.where("relation is not null and user_id = ? OR invited_id = ?", user2.id, user2.id)
它生成此查询,似乎可以工作但基于它生成的SQL我很担心它。注意该语句的第二个AND和第二部分。感觉它偶尔可能会返回误报。
(0.9ms) SELECT COUNT(*) FROM "memberships" WHERE (memberships.user_id = 1 OR memberships.invited_id = 1) AND (relation is not null and user_id = 2 OR invited_id = 2)
如何自定义AR where
查询更符合我想要做的事情而没有任何隐藏的陷阱?
答案 0 :(得分:1)
这并不完全清楚,但我认为你的意思是:
relation is not null and (user_id = ? OR invited_id = ?)