2013-05-10 4 views
0

Мне было интересно, нужно ли мне создавать пользовательскую проверку для следующего сценария.Проверьте, существует ли запись в Model Rails

У меня есть модель Prediction, в которой пользователь представляет свои предсказанные оценки для набора футбольных матчей, они сгруппированы по 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 
+0

Вы забыли own_to: предсказание в вашей модели прибора, возможно, это вызывает ошибку. – Mattherick

ответ

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 
+0

спасибо за ваш ответ, игровая модель? его модель и модель прогнозирования – Richlewis

+0

Это будет работать так, что пользователь может иметь только одно предсказание для каждого прибора ... Но я не уверен, что это хотите, чтобы вы захотели архивировать? – jokklan

+0

да, это нормально, позже, хотя и не имеет отношения к вопросу, пользователь сможет сделать несколько предиктонов на основе того, сколько лиг они принадлежат, но, как я сказал, не имеет отношения к этому вопросу. код – Richlewis

Смежные вопросы