检查模型导轨中是否存在记录

时间:2013-05-10 10:00:52

标签: ruby-on-rails ruby-on-rails-3 validation model

我想知道是否需要为以下场景创建自定义验证。

我有一个预测模型,用户提交一组足球比赛的预测分数,按照fixture_date分组。

如果用户已经提交了针对这些游戏的预测,我想显示一条错误消息,指出他们无法提交错误,或者如果日期的预测存在则可能不会显示该表单。目前我可以为同一个游戏创建多组预测。可能验证会更好。我如何说明如果current_user的那个日期存在预测,那么不提交?

所以到目前为止我的设置看起来像这样

class Prediction < ActiveRecord::Base
  attr_accessible :home_team, :away_team, :home_score, :away_score, :fixture_date,   :fixture_id, :user_id

has_one :fixture
end

class Fixture < ActiveRecord::Base
  attr_accessible :home_team, :away_team, :fixture_date, :kickoff_time, :prediction_id
end

预测控制器

 def index
   @predictions = current_user.predictions if current_user.predictions
 end

 def new
   @prediction = Prediction.new
 end

 def create
  begin
  params[:predictions].each do |prediction|
    Prediction.new(prediction).save!
  end
  redirect_to root_path, :notice => 'Predictions Submitted Successfully'
rescue
  render 'new'
 end
end
end

1 个答案:

答案 0 :(得分:1)

我不确定预测和游戏之间的关系。你有Game型号吗?如果是这样,那么这样的事情应该有效:

class Prediction < ActiveRecord::Base
  attr_accessible :home_team, :away_team, :home_score, :away_score, :fixture_date, :fixture_id, :user_id

  has_one :fixture

  validates :fixture_id, :uniqueness => { :scope => :user_id,
:message => "only one prediction per game is allowed, for each user" }
end