我有User
模型与属性full_name
。我希望用户只用他们的名字或姓氏进行搜索。我试过了
User.where("username= :username OR full_name LIKE :full_name", username: "rony", full_name: "rony")
但问题是,当我使用这个唯一的查询进行搜索时,full_name将始终返回nill,因为此查询仅在full_name中搜索精确的“rony”而不是例如“rony sianturi”,在执行此查询时是否有任何其他建议。谢谢。
我搜索过类似的问题,但所有其他问题都与此问题相反。所以没有运气
谢谢。
尝试使用带有通配符的like
:
User.where("username = ? OR full_name like ?", "rony", "%rony%")
您可以使用Arel构建查询。例如,这里的搜索查询就像
User.where(
User.arel_table[:name].eq("#{key_word}").
or(
User.arel_table[:name].lower.matches("%#{key_word.downcase}%")
)
)
请查看Arel documentation以获取更多详细信息和高级查询。