我已经构建了一个自定义表单,用于在has_many :through
关系上创建加入模型。模型看起来大致如下:
class Team
has_many :team_members
has_many :members, :through => :team_members
end
class Member
has_many :team_members
has_many :teams, :through => :team_members
end
class TeamMember
belongs_to :team
belongs_to :member
# and this model has some validations too
end
我建立的表单用于选择团队成员。我不会粘贴表单,但会使用form_tag
方法,并且基本上会发送包含member_id
和squad_number
的哈希数组。然后我用一个看起来大致相似的动作来更新数据库(简化了一下,但是你得到了jist):
@team.transaction do
@team.team_members = params[:team_members].collect{|tm| @team.team_members.new(tm)}
if @team.save
redirect_to ...
else
render :action => :members
end
end
一切都很好,但我正在验证squad_number
的唯一性和数字。因此,当任何这些验证失败时,我如何在我的视图中访问它们,以及如何确定它失败的众多成员中的哪一个?
答案 0 :(得分:1)
我不确定这会给你你想要的东西,但你可以像这样创建你的team_members
team_members = @team.team_members.create(params[:team_members])
并可通过team_members.errors
访问错误。