如何验证用户是否已注册?

时间:2013-01-23 01:20:11

标签: ruby-on-rails

首先,感谢每个人花时间阅读这篇文章。很多,非常感谢提前。

我目前正在为课程建立一个小型注册系统。我阻止用户在我的注册控制器中使用“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

1 个答案:

答案 0 :(得分:1)

我不确定我是否真的理解你的问题,但尝试

def already_registered?(ocurrence)
  self.registrations.where(:ocurrence => ocurrence).any?
end

然后用

来调用它
current_user.already_registered?(current_ocurrence)