【问题标题】:Ruby where column is alphanumericRuby 列是字母数字
【发布时间】:2016-03-27 15:15:56
【问题描述】:

我有一张牌桌。我想做一个查询,将元素过滤为标题包含英文字母数字字符的元素,即 A-Z 或 0-9。

我该怎么做呢?

我试过Card.where(title: )。问题是这似乎只做直接比较。我相信我需要应用一些正则表达式参数。这可能吗?

同样,有没有一种简单的方法可以将方法传递给where 函数,我可以用它来执行所有逻辑,例如Card.where(title: myCheckerMethod)

【问题讨论】:

  • 你用的是什么数据库?
  • 你不能将ruby方法传递给数据库,而是可以获取所有记录并通过你的方法过滤它们,但效率不高
  • postgresql 我认为,在 heroku 上

标签: ruby-on-rails ruby regex postgresql rails-activerecord


【解决方案1】:

由于您使用的是 PostgreSQL,因此您的 where 语句可以提供匹配的模式。但是,应该注意的是,这有效地删除了与数据库无关的 rails 样式,并且您必须使用特定于所使用数据库类型的正则表达式语法。

Card.where('cards.title ~* ?', '[A-Z0-9]+')

【讨论】:

    猜你喜欢
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多