2015-06-04 77 views
0

我有一個StudentStudent_section模型。 Student表有student_id and roll_noStudent_sectionstudent_id, standard_id and section_id驗證另一個表中的數據內的唯一性

Roll_no應該是唯一的,在那standardsection

student.rb文件我無法在Student_section模型設置爲roll_no獨特的自定義驗證與該standard and section存在。

我遇到了麻煩,任何人都可以幫忙嗎?

回答

0

如果您正在使用RAILS 4,您可以像這樣定義模型的關係,如果爲true,則會從集合中忽略重複。

has_many :student_sections, -> { uniq }, through: :students 

如果你正在使用Rails < 4版,試試這個

has_many :student_sections, :through => :students, :uniq => true 
0

我同意你的自定義驗證程序(這將讓你解釋,必須在滿足條件的使用通過其錯誤信息一致和詳細的方式)。你真正需要做的是讓基於其結果兩個不同的查詢和回報:

def roll_no_must_be_unique 
    # Boolean indicating if roll_no is unique within the Student table 
    unique_in_student = Student.where(roll_no: roll_no).count == 0 
    # Boolean indicating if roll_no is unique within the Standard table 
    unique_in_standard = Standard.where(roll_no: roll_no).count == 0 

    # Adds the error if either query returned non-unique 
    errors.add(:roll_no, 'Error Message Here') unless unique_in_student && unique_in_standard 
end 

如果你覺得傾斜,你可以簡單地添加一條錯誤消息每個單獨的查詢後,表示該表失敗。這確實是一個偏好問題。