【发布时间】:2017-02-08 21:41:32
【问题描述】:
我使用 Rails 5.0.1 和 Postgresql 作为我的数据库。我有一个表,其中包含 :content 列,其中包含单词。
问题:当我在寻找一个特定的词时,我想看看这个词是否包含我选择的字母(字符)。假设我想 DB 返回包含字母“a”、“b”和“c”的单词(所有这些,但没有特定顺序)
我在做什么:我发现我可以使用
Word.where("content like ?", "%a%").where("content like ?", "%b%").where("content like ?", "%c%")
或者
Word.where("content like ? content like ? content like ?", "%a%", "%b%", "%c%")
在这两种情况下,即使我切换给定字母/子字符串的顺序,它也可以正常工作,例如。两者都会找到单词“back”、“cab”等。
问题:有没有更好/更DRY的方法?如果要查找包含 8 个不同字母的单词怎么办?我必须使用“内容喜欢吗?” 8次?是否可以将参数作为数组传递? (假设我不知道用户会输入多少个字母)
【问题讨论】:
标签: ruby-on-rails postgresql rails-activerecord