当我的表单被发布时,它将首先创建我的模型对象#1,如果成功,那么它将创建模型对象#2。
我的表单字段需要混合两个模型对象的两个输入字段。
我可以使用表单助手执行此操作,还是应该手动执行此操作?
更新
以下是我的模特:
我的模特:
Account
has_many :users
has_one :primary_user, :class_name => 'User'
User
has_one :account
我的用户表有:
account_id
我的帐户表:
primary_user_id
因此,在注册/注册帐户时,我还希望包含用户对象中的字段:
user_name
email
password
因此,在创建帐户时,也会创建primary_user用户帐户。
我该怎么做?
PSS:员工的哪一方应该可以为空,用户表上的account_id或帐户端的primary_user?因为目前我双方都没有空值而且不起作用!
答案 0 :(得分:1)
型号代码
class Account < ActiveRecord::Base
has_many :users
has_one :primary_user, :class_name => "User",
:conditions => {:is_primary => true}
accepts_nested_attributes_for :primary_user, :allow_destroy => true
end
控制器代码
class AccountsController < ApplicationController
def new
@account = Account.new(:primary_user => User.new)
end
def create
@account = Account.new(params[:account])
if @account.save
flash[:info] = "Created account"
redirect_to root_url
else
render :new
end
end
end
查看代码
- semantic_form_for @account do |f|
- f.inputs do
!= f.input :company_name
!= f.input :address
!= f.input :city
!= f.input :state
- f.semantic_fields_for :primary_user do |puf|
!= f.input :name
!= f.input :login
!= f.input :password
!= f.input :password_confirmation
- f.buttons do
!= f.commit_button 'Save'
! #{link_to 'Cancel', root_url}