我希望在3列a.k.a上具有唯一性。如果三列相同则无效
如果列value
,categroy_item_id
和key
相同,我希望它无效。但是,如果3列中的一列不同而另外2列相同,那么就可以了。
这是我试过的
validates :value, length: { maximum: 65000 }, uniqueness: { case_sensitive: false, scope: :category_item_id && :key, if: 'key_type == 2' }
使用上面的代码,如果记录具有相同的key
相同的value
和不同的category_item_id
,则当它应该有效时,它将被视为无效(因为重复值),因为{ {1}}是不同的。如果它具有相同的category_item_id
和key
但具有不同的category_item_id
或相同的value
和category_item_id
且具有不同的value
,则会将其作为有效传递。因此,只有相同key
相同key
且不同value
的情况才会被归类为无效。
我无法弄清楚它是否是范围内的category_item_id
(我还没有找到正式的方法)或编码工作但我不理解它并且需要改变一些东西得到我想要的结果。
(一切都有&&
key_type
,你最后注意到了这一点。)
答案 0 :(得分:1)
唯一性范围允许您传递数组:
validates :value, length: { maximum: 65000 }, uniqueness: { case_sensitive: false, scope: [:category_item_id, :key], if: 'key_type == 2' }