我很难理解如何使用我拥有的嵌套表单。用户将登录该应用程序,单击“创建团队”,此页面将允许用户输入团队名称和团队成员列表。 (有效地创建团队成员列表)。
fields_for
成员资格的嵌套表单,以便创建成员资格。 See screenshot of form Entrant.find_or_creates_by_name
以创建参与者。如何防止这种情况发生并允许用户添加参赛者/确保正确创建会员资格?
道歉,如果这已经得到了回答,(似乎有很多关于has_many的主题通过嵌套资源,但我找不到任何关于我的具体问题(我可能/似乎不清楚)
我的创建操作目前是标准的嵌套表单操作,如下所示:
def create
@user = current_user
@team = @user.teams.build(params[:team])
if @team.save
redirect_to(team_url(@team), :notice => "Team was successfully saved")
else
render :action => "new"
end
end
我有以下型号:
用户模型
class User < ActiveRecord::Base
has_many :teams
end
团队模型
class Team < ActiveRecord::Base
belongs_to :user
has_many :memberships
has_many :entrants, :through => :memberships
attr_accessible :name, :team_type, :website, :memberships_attributes
accepts_nested_attributes_for :memberships, allow_destroy: true
end
会员资格模型
class Membership < ActiveRecord::Base
belongs_to :team
belongs_to :entrant
validates :team_id, presence: true
validates :entrant_id, presence: true
attr_accessor :entrant_name
attr_accessible :entrant_name
def entrant_name
entrant && entrant.name
end
def entrant_name=(name)
self.entrant = Entrant.find_or_create_by_name(name) unless name.blank?
end
end
参与者模型 - 这实际上是成员列表团队的成员,但是当用户进入团队时,他们可以指定昵称,这可能会改变团队。
class Entrant < ActiveRecord::Base
attr_accessible :name
has_many :memberships
has_many :teams, :through => :memberships
end
答案 0 :(得分:0)
我认为这是一个验证错误。尝试删除
验证:entrant_id,存在:真实
来自会员模式。