У меня три таблицы, соискатели, пользователи и рейтинги. Основная идея заключается в том, что каждому кандидату присваивается рейтинг любым числом пользователей. Эта часть у меня работает без проблем. Однако, если пользователь идет редактировать свою оценку (которая включает в себя оценку), форма добавляет вторую оценку. Мне нужно что-то изменить, чтобы каждый пользователь мог назначить только одну оценку данному кандидату.
class Applicant < ActiveRecord::Base
has_many :ratings
accepts_nested_attributes_for :ratings, :allow_destroy => true
class User < ActiveRecord::Base
has_many :ratings
Таблица рейтингов содержит только идентификатор заявителя, идентификатор пользователя и оценку.
class Rating < ActiveRecord::Base
belongs_to :user
belongs_to :applicant
validates_uniqueness_of :applicant_id, :scope => :user_id
Проверка рейтинга гарантирует, что второй рейтинг не принят, но мне нужно изменить ассоциации (или форму) так, чтобы второй вариант оценки никогда не появлялся.
Форма моей заявки:
<%= f.fields_for :ratings do |builder| %>
<%= builder.collection_select :score, Rating::SCORES, :to_s, :humanize %>
<%= builder.hidden_field :user_id, :value => current_user.id %>
<%= builder.hidden_field :applicant_id, :value => @applicant.id %>
<% end %>
Как мне указать (в модели кандидата, я думаю, так как это форма, которую я редактирую), что комбинация Applicant_id, user_id в таблице рейтингов должна быть уникальной?