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
注:上座率在事件嵌套形式创作。
我会用uniqueness
验证与scope
选项。这将是类似的,
validates_uniqueness_of :event_id, :scope => [:user_id]
在Attendance
模型。
我将此验证添加到Attendance.rb,但它不能解决问题 - 我仍然可以为同一用户创建多个出席同一个事件。我错过了什么? – makerbreaker
@makerbreaker - 你是怎么添加的?你能告诉我模型代码吗? –
我编辑了这个问题。所以当我创建它时显示没有验证错误,但是当我编辑'attendance_rate_id'时 - 只比显示'guest_id'错误... – makerbreaker
唯一索引? 'validates_uniqueness_of'? – Smar