【发布时间】:2011-11-16 19:33:42
【问题描述】:
我有三个表,申请者、用户和评级。基本思想是每个申请人都会被任意数量的用户分配一个评级。这部分我工作没有任何问题。但是,如果用户去编辑他们的评分(包括分数),表单会添加第二个评分。我需要进行一些更改,以便每个用户只能为给定的申请人分配一个评级。
class Applicant < ActiveRecord::Base
has_many :ratings
accepts_nested_attributes_for :ratings, :allow_destroy => true
class User < ActiveRecord::Base
has_many :ratings
评分表只包含一个申请者 ID、一个用户 ID 和一个分数。
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 %>
我如何指定(我猜是在申请人模型中,因为这是我正在编辑的表格)评分表中的申请人 ID、用户 ID 组合必须是唯一的?
【问题讨论】:
标签: ruby-on-rails-3 validation nested-forms nested-attributes