0

何よりもまず、この投稿を読むために時間を割いてくれたすべての人に感謝します。よろしくお願いします。

私は現在、クラスの小さな登録システムを構築しています。登録コントローラーの「validates:user_id、:uniqueness => {:scope =>:occurrence_id}」を使用して、ユーザーが同じイベントに2回登録するのを停止しています。「登録」ボタンをグレー表示して、これを自分のビューに拡張したいと思います。

最善の方法は、オカレンスモデルに次のようなメソッドを作成することだと思います。

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

今、私はこれが機能しないことを確かに知っています。現在のユーザーが登録していないオカレンスが1つあるかどうかを検索するにはどうすればよいですか?

モデル/登録.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

models /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 に答える