0

私のモデルにはそのような検証があります

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

ユーザーであるという考えは、フィクスチャごとに 1 つの予測しか行うことができず、同じフィクスチャに対して別の予測を送信しようとすると、既に送信されたようにできないというメッセージが表示されます..

私はそうのようにform_tagを使用しています

<%= form_tag controller: 'predictions', action: 'create', method: 'post' do %>
 <%= error_messages_for :prediction %><!-- Just added this -->

<% @fixture_date.sort.each do |date, fixture| %>
<%= date_format(date) %>
  <% fixture.each do |fixture|%>
   <%= fixture.home_team %>
   <%= text_field_tag "predictions[][home_score]" %> 
   <%= text_field_tag "predictions[][away_score]" %>

   <%= fixture.away_team %>  
    <%= hidden_field_tag "predictions[][home_team]", fixture.home_team %>
    <%= hidden_field_tag "predictions[][away_team]", fixture.away_team %>
    <%= hidden_field_tag "predictions[][fixture_date]", fixture.fixture_date %>
    <%= hidden_field_tag "predictions[][fixture_id]", fixture.id %>
    <%= hidden_field_tag "predictions[][user_id]", current_user.id %>
    <% end %>

コントローラ

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

現時点では、かなり醜く実用的ではありません

ActiveRecord::RecordInvalid in PredictionsController#create

Validation failed: Fixture only one prediction per game is allowed, for each user

エラー メッセージをページに表示するにはどうすればよいですか

これならいけると思った

<%= error_messages_for :prediction %>

上記のようですが、そうではありません

どんな助けでも大歓迎

4

1 に答える 1