加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

activerecord – 有条件地验证Rails中布尔值的唯一性

发布时间:2020-12-17 03:06:58 所属栏目:百科 来源:网络整理
导读:我试图验证布尔字段的唯一性,但只有当它是真的时.我的模型中定义了以下内容: validates_uniqueness_of :org_feed,if: :org_feed 运行此验证时,它会生成以下SQL: SELECT 1 AS one FROM `feeds` WHERE `feeds`.`org_feed` = BINARY 't' LIMIT 1 但是,此查询
我试图验证布尔字段的唯一性,但只有当它是真的时.我的模型中定义了以下内容:

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的Feed时返回一行,这与它应该执行的操作完全相反.我希望BINARY’t’只是真,因为该字段是布尔值.因此,我觉得查询应该是这样的:

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

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

解决方法

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

validates :org_feed,uniqueness: true,if: :org_feed_is_true?

def org_feed_is_true?
  org_feed == true
end

有关这方面的更多信息,请查看http://guides.rubyonrails.org/active_record_validations.html#using-a-symbol-with-if-and-unless.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读