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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容