2016-03-08 159 views
0

我:Ruby on Rails的多對多驗證

scaffold attendance event:references user:references attendance_rate:references 
scaffold user name email 
scaffold event start_time end_time 
scaffold attendance_rate rate:integer #)[1 or 0], i do not want to use boolean) 

協會:

event has_many :attendances 
attendance belongs_to :event 

user has_many :attendances 
attendance belongs_to :user 

問題:我怎麼能允許同一個用戶 「參加」 同一事件只有一次?

Attendance.rb:

class Attendance < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :attendance_rate 
    belongs_to :event 
    validates :user_id, :attendance_rate_id, presence: true 
    validates_uniqueness_of :event_id, :scope => [:user_id] 
end 

注:上座率在事件嵌套形式創作。

+3

唯一索引? 'validates_uniqueness_of'? – Smar

回答

0

我會用uniqueness驗證與scope選項。這將是類似的,

validates_uniqueness_of :event_id, :scope => [:user_id]Attendance模型。

+0

我將此驗證添加到Attendance.rb,但它不能解決問題 - 我仍然可以爲同一用戶創建多個出席同一個事件。我錯過了什麼? – makerbreaker

+0

@makerbreaker - 你是怎麼添加的?你能告訴我模型代碼嗎? –

+0

我編輯了這個問題。所以當我創建它時顯示沒有驗證錯誤,但是當我編輯'attendance_rate_id'時 - 只比顯示'guest_id'錯誤... – makerbreaker