Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails接受和验证的\u嵌套的\u属性\u。。。轨道2.3.11_Ruby On Rails_Validation_Nested Attributes - Fatal编程技术网

Ruby on rails rails接受和验证的\u嵌套的\u属性\u。。。轨道2.3.11

Ruby on rails rails接受和验证的\u嵌套的\u属性\u。。。轨道2.3.11,ruby-on-rails,validation,nested-attributes,Ruby On Rails,Validation,Nested Attributes,我有两种型号 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 这是意料之中的。但是,如果我使用相同的权限属性创建组两次,它不会失效:

我有两种型号

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.new(:permissions_attributes => [{:role => 'admin', :action => 'one'}, {:role => 'admin', :action => 'one'}]
> g.valid?  # => true        BUT THIS SHOULD BE FALSE!!
> g.save # => true           Oh Nos!!!
类组true
验证与之关联的权限
结束

这很可能是因为每个权限都保存在同一事务(父事务)中。rails文档中写道:“在保存父模型时,所有对模型的更改(包括标记为销毁的模型的销毁)都会自动和原子地保存和销毁。这发生在父保存方法启动的事务中。”我的猜测是,由于对象尚未真正存储,因此正在通过db查找唯一性。您解决了这个问题吗?我也有同样的问题抱歉,很久以前就忘了这个问题了,当我继续做其他事情时,还没有研究最终的解决方案。尝试过,什么都没有做,你在提出建议之前测试过吗?你可以阅读@npiv,不是每个答案都是答案:)这是一次尝试。我可以确认这到今天仍然不起作用,接受已调用的\u嵌套\u属性\u验证内部关联的\u
> 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!!!
class Group < AR
  has_many :permissions
  accepts_nested_attributes_for :permissions, :allow_destroy => true
  validates_associated :permissions
end