【问题标题】:Conditionally validating uniqueness of a boolean in Rails有条件地验证 Rails 中布尔值的唯一性
【发布时间】:2014-05-09 23:37:30
【问题描述】:

我正在尝试验证布尔字段的唯一性,但前提是它为真。我的模型中定义了以下内容:

validates_uniqueness_of :org_feed, if: :org_feed

当此验证运行时,它会生成以下 SQL:

SELECT 1 AS one FROM `feeds` WHERE `feeds`.`org_feed` = BINARY 't' LIMIT 1

但是,此查询在找到布尔型 org_feed 为 0 的提要时返回一行,这与它应该做的完全相反。我希望BINARY 't' 只是true,因为该字段是一个布尔值。因此,我觉得查询应该是这样的:

SELECT 1 AS one FROM `feeds` WHERE `feeds`.`org_feed` = true LIMIT 1

我是否需要以某种方式告诉验证这是一个布尔字段?

【问题讨论】:

    标签: activerecord ruby-on-rails-4 rails-activerecord


    【解决方案1】:

    您可以在模型中使用以下代码:

    validates :org_feed, uniqueness: true, if: :org_feed
    

    查看http://guides.rubyonrails.org/active_record_validations.html#using-a-symbol-with-if-and-unless 了解更多信息。

    【讨论】:

    • 为什么不更简单:验证:org_feed,唯一性:true,如果::org_feed 不需要方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多