我正在使用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 => :更新
答案 0 :(得分:0)
粘贴解决方案作为答案:
事实证明,验证没有查看将由
定义的mymodel记录的选择列表mymodel属于项目和项目has_many mymodel
所以通过以下调整就可以了。
validates_uniqueness_of:file_number,:scope => [:version,:project_id],:on => :updat