Rails通过full_name中的first_name搜索用户

问题描述 投票:0回答:2

我有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”,在执行此查询时是否有任何其他建议。谢谢。

我搜索过类似的问题,但所有其他问题都与此问题相反。所以没有运气

谢谢。

ruby-on-rails postgresql sqlite
2个回答
1
投票

尝试使用带有通配符的like

User.where("username = ? OR full_name like ?", "rony", "%rony%")

0
投票

您可以使用Arel构建查询。例如,这里的搜索查询就像

User.where(
  User.arel_table[:name].eq("#{key_word}").
    or(
      User.arel_table[:name].lower.matches("%#{key_word.downcase}%")
    )
)

请查看Arel documentation以获取更多详细信息和高级查询。

© www.soinside.com 2019 - 2024. All rights reserved.