【问题标题】:How to put "Is not empty" as a hash value?如何将“不为空”作为哈希值?
【发布时间】:2013-07-09 09:34:12
【问题描述】:

我有一个哈希,用于 SQL 查询

:profiles => {:gender => Female, :idea => ''}

它现在的设置方式是寻找性别为女性和空洞想法的个人资料。这意味着想法列中的字符串为空。我怎样才能得到完全相反的结果。我想查找idea列不为空的行。

注意:我不是在寻找 IS NOT NULL,因为字符串为空且 NOT NOT_NULL。

【问题讨论】:

  • 你拥有的不是哈希。它不是一个有效的 Ruby 对象。

标签: sql ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

没有办法在哈希本身内表达这一点,但您可以使用其他查询方式之一,例如

Profile.where("gender = ? and idea != ''", gender)

或者如果您升级到 Rails 4,您可以使用 not 方法来反转条件。例如

Profile.where.not(idea: '')

您可以组合多个where 调用,例如

Profile.where(gender: 'Female').where.not(idea: '')

【讨论】:

  • 问题标记为 ruby​​-on-rails-3。 not 不是在 rails-4 中添加的功能吗?
【解决方案2】:

您可能正在寻找 !string.empty?

【讨论】:

    【解决方案3】:

    我认为这不能用哈希来完成。

    但是你可以:

    where('gender != ? OR gender IS NOT ?', '', nil)
    

    【讨论】:

    • 我希望 IDEA 列不为空。
    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2020-12-08
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多