rails 2.3.8 validates_uniqueness_of with:scope not working

时间:2011-04-28 15:35:55

标签: ruby-on-rails validation

我正在使用rails 2.3.8并且我有一个模型,其中包含两个我要验证的属性。

我有版本和文件编号,我需要在更新时验证文件编号的唯一性,但只能根据每个独特的版本。

所以我试过

 validates_uniqueness_of :file_number, :scope => :version, :on => :update

我反复得到“文件编号已被采取”

文件编号没有特殊逻辑,除了在before_create中我将该版本的项目数加1。

编辑:这是服务器执行的SQL。 http://pastie.org/private/ysbwtiyouhgqkjsjjbooa 这里的id是我正在更新的记录的id,而从查询返回的是另一条记录。

有什么想法吗?

编辑 - 我明白了! 解决方案:

事实证明,验证没有查看将由

定义的mymodel记录的选择列表

mymodel属于项目和项目has_many mymodel

所以通过以下调整就可以了。

validates_uniqueness_of:file_number,:scope => [:version,:project_id],:on => :更新

1 个答案:

答案 0 :(得分:0)

粘贴解决方案作为答案:

事实证明,验证没有查看将由

定义的mymodel记录的选择列表

mymodel属于项目和项目has_many mymodel

所以通过以下调整就可以了。

validates_uniqueness_of:file_number,:scope => [:version,:project_id],:on => :updat