验证子模型的属性范围对多态关系的唯一性是否可行?
例如我有一个名为field的模型属于可现场的:
class Field < ActiveRecord::Base belongs_to :fieldable,:polymorphic => :true validates_uniqueness_of :name,:scope => :fieldable_id end
我有其他几个模型(页面,项目)有很多字段.所以我想要的是验证字段名称对父模型的唯一性,但问题是偶尔一个页面和一个项目共享相同的ID号,导致验证失败,当他们不应该.
我只是这样做错了,还是有更好的方法呢?
解决方法
只需扩大范围以包括现场类型:
class Field < ActiveRecord::Base belongs_to :fieldable,:scope => [:fieldable_id,:fieldable_type] end