我为我们的支持者制作了一个支持票系统 - 用ruby编写轨道(Ruby 1.9.3 Rails 3.2)
有一个belongs_to与用户(支持者)关联的票证模型.
我使用Ernie的gem Ransack进行搜索.当支持者搜索他自己的票据(由ticket_controller.index处理)时,他还应该在搜索结果中看到无关联票证(views/tickets/index)(结合其他搜索条件,例如"date"或其他)
(这样他可以拿开票)
预期的SQL语句:
SELECT * FROM tickets WHERE ... AND (user_id=5 OR user_id IS NULL) AND ...
Run Code Online (Sandbox Code Playgroud)
我尝试user_id_null_or_user_id_eq了索引视图的搜索形式 - 但这不起作用(没有方法错误)
如何创建自定义谓词(或ransacker)来解决此问题?(感谢@Magnuss的评论)
不幸的是,我没有Arel的经验
就像是:
ransacker :user_null_or_eq do
...
end
Run Code Online (Sandbox Code Playgroud)
在门票模型中.
我希望这能更详细地解释这个问题.
谢谢你的帮助.