2011-04-28 74 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