以下查询根本不按 id(主键)进行搜索 - 它不断将 0 分配给 id,将 search_str 分配给 name。如果我们使用等于运算符而不是“id”的匹配,它会正确地执行此操作。以下范围是否存在问题。
scope :or_search, lambda {|name| where(arel_table[:name].matches("%{search_str}%").or(arel_table[:id].matches("%#{search_str}%")))
最佳答案
我对你想要做什么有点困惑,但首先
arel_table[:name].matches("%{search_str}%")
你缺少#
,我认为这应该是
arel_table[:name].matches("%#{search_str}%")
其次,您没有在任何地方使用 name
参数,仅从这个角度来看,也许您想用 name
替换 search_str
?
关于ruby-on-rails - 无法按名称和主键搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14494591/