嵌套表格:如果没有输入儿童信息,则不应保存

我有一个嵌套的表单来注册一个新的组织和一个成员(1:组织与其成员之间的很多关系)。 两者都在模型文件和迁移文件中都有validation。

问题 :如果没有正确输入两者的信息,我希望表格不要注册任何东西(不是组织或成员)。

目前,当我注册一个新组织但是将该成员的所有变量都留空时,它会在没有错误消息的情况下注册该组织,并且它不会注册任何成员。

相反,我希望它也尝试编写成员,然后生成错误消息,因为成员的某些变量不允许为空。 由于该错误,它不应该保存组织,直到成员信息也是正确的。

如果我为成员输入一些信息,这确实可以正常工作:如果该成员随后无效,则不会保存组织或成员并给出错误。 如果我输入成员的有效信息而没有组织信息,它也能正常工作:它会产生错误并且不会保存任何内容。 但是如果我为组织输入有效信息而没有成员信息则不起作用:它不会产生任何错误并仅保存组织。

我应该如何更改我的代码来调整它?


风景:

 

部分/forms:

    

Details of the organization:

Your personal details:

和控制器:

  def new if (logged_in?) flash[:danger] = "You're already logged in" redirect_to root_url end @organization = Organization.new @member = @organization.members.build end def create @organization = Organization.new(new_params) if @organization.save @organization.members.each do |single_member| single_member.send_activation_email end flash[:success] = "Please check your email to activate your account." redirect_to root_url else @organization.members.build if @organization.members.blank? render 'new' end end private def new_params params.require(:organization).permit(:name, members_attributes: [:email, :username, :password, :password_confirmation ]) end 

在您的组织模型中,您可以检查成员

 class Organization validate :check_member def check_member if members.empty? errors.add(:base, 'Member is not present') end end end