首先,感谢每个人花时间阅读这篇文章。很多,非常感谢提前。
我目前正在为课程建立一个小型注册系统。我阻止用户在我的注册控制器中使用“validates:user_id,:uniqueness => {:scope =>:occurrence_id}”通过模型向同一事件注册两次。我想通过灰显“注册”按钮将其扩展到我的视图。
我认为最好的方法是在事件模型中编写一个类似这样的方法:
def already_registered?(user)
if user.id == self.registrations.find()
false
else
true
end
end
现在我确信这不起作用。如何搜索当前用户是否尚未注册一个事件?
模型/ registration.rb
class Registration < ActiveRecord::Base
belongs_to :user
belongs_to :occurrence
attr_accessible :occurrence_id, :registration_date, :user_id, :occurrence, :user
validates :user_id, :uniqueness => {:scope => :occurrence_id}
end
模型/ occurrence.rb
class Occurrence < ActiveRecord::Base
belongs_to :course
belongs_to :location
has_many :registrations
has_many :users, :through => :registrations
validates :price, :presence => true
attr_accessible :course_id, :datetime_end, :datetime_start, :location_id, :price, :teacher_id, :class_size
def remaining_seats
self.class_size - self.registrations.count
end
end
答案 0 :(得分:1)
我不确定我是否真的理解你的问题,但尝试
def already_registered?(ocurrence)
self.registrations.where(:ocurrence => ocurrence).any?
end
然后用
来调用它current_user.already_registered?(current_ocurrence)