0

首先,感谢大家花时间阅读这篇文章。非常非常感谢提前。

我目前正在为课程建立一个小型注册系统。我在我的注册控制器中使用“validates :user_id, :uniqueness => {:scope => :occurrence_id}”来阻止用户通过模型注册两次相同的事件。我想通过灰色的“注册”按钮将此扩展到我的视图。

我认为最好的方法是在发生模型中编写一个方法,如下所示:

def already_registered?(user)
  if user.id == self.registrations.find()
    false
  else
    true
  end
end

现在我确定这是行不通的。如果当前用户没有注册一个事件,我如何搜索?

模型/注册.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
4

1 回答 1

1

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

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

你用它来称呼它

current_user.already_registered?(current_ocurrence)
于 2013-01-23T01:33:15.183 回答