尽管数据库验证工作正常,但我的模型验证并未按预期工作。
我需要对3个属性的组合有一个独特的约束。验证应该是:如果:tag_owner_area存在,表中应该没有其他行具有相同的tag_owner_area,fieldable_type和fieldable_id。
Field.rb模型具有以下验证:
validates :tag_owner_area, :allow_blank => true, uniqueness: {scope: [:fieldable_type, :fieldable_id]}
我认为这与PostgreSQL验证的条件相同:
create_table :fields do |t|
t.integer :tag_owner_area
t.references :fieldable, polymorphic: true, index: true, :null => false
t.references :user, foreign_key: true
t.timestamps
end
# Here is the validation that works as intended
add_index :fields, [:tag_owner_area, :fieldable_type, :fieldable_id],unique: true, :name => 'field_unique_index'
必须有所不同,因为DB验证按预期设置,但模型验证似乎没有被触发。