我有两个模型
class Group < AR
has_many :permissions
accepts_nested_attributes_for :permissions, :allow_destroy => true
end
class Permission < AR
validates_uniqueness_of :action, :scope => [:role]
end
在创建新组时,我似乎无法获得对工作权限的唯一约束,仅在更新时。这是一个示例输出。有谁知道获得验证以处理嵌套属性和唯一约束的最佳方法?
样本输出
> g = Group.create(:permissions_attributes => [{:role => 'admin', :action => 'one'}])
> # Now add the same permissions, should not be valid
> g.permissions_attributes = [{:role => 'admin', :action => 'one'}]
> g.valid? # => false
这是意料之中的。但是,如果我两次创建具有相同 permissions_attributes 的组,它不会无效:
> g = Group.new(:permissions_attributes => [{:role => 'admin', :action => 'one'}, {:role => 'admin', :action => 'one'}]
> g.valid? # => true BUT THIS SHOULD BE FALSE!!
> g.save # => true Oh Nos!!!