2011-04-28 78 views
1

我正在使用rails 2.3.8,并且我有一个模型有两个我想要验证的属性。rails 2.3.8 validates_uniqueness_of with:scope not working

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

所以我已经试过

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

我多次得到“文件号码已被占用”

没有与除在before_create文件号,我加一个没有特殊的逻辑该版本的项目数量。

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

任何想法?

编辑 - 我明白了! SOLUTION:

原来的验证不看对面的为MyModel记录的选择列表这将由

为MyModel定义属于有以下的调整它的工作项目和项目的has_many为MyModel

所以。

validates_uniqueness_of:file_number,:范围=> [:版本,:PROJECT_ID]:上=>:更新

回答

0

粘贴溶液作为答案:

原来验证不看跨越选择的为MyModel记录列表,它会被

为MyModel定义属于有以下的调整它的工作项目和项目的has_many为MyModel

左右。

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