如何在rails中添加一个表单,创建2个具有1对多依赖关系的模型?

时间:2016-05-31 00:00:36

标签: ruby-on-rails-4

我有两个具有1对多关联的模型,Account有多个User

我想为帐户创建一个注册表单,同时为该帐户创建第一个用户。

我的Account型号:

class Account < ActiveRecord::Base
   has_many :users, dependent: :destroy
   validates :name, presence: true, length: { maximum: 100 }
end

我的User型号:

class User < ActiveRecord::Base
   belongs_to :account
   validates :account_id, presence: true

如何创建一个同时创建帐户和用户的表单,以及我的accounts_controllerusers_controller需要做什么?

1 个答案:

答案 0 :(得分:0)

您可以通过嵌套表单执行此操作。

class Account < ActiveRecord::Base
   has_many :users, dependent: :destroy
   accepts_nested_attributes_for :users
   validates :name, presence: true, length: { maximum: 100 }
end

在您的帐户使用表格中使用&#34; fields_for&#34;帮助者为该帐户的用户添加字段。

     <div class="field">
2      <%= f.label :account_field1%><br>
3      <%= f.text_field :account_field1%>
4    </div>
5 
6    <h2>Users</h2>
7       <%= f.fields_for :users do |user| %>
8         <div class="user_fields">
9           <div class="field">
10            <%= user.label :name %><br>
11            <%= user.text_field :name %>
12          </div>
13        </div>
14     <% end %>

在您的accounts_controller中,在控制器强参数白名单中添加users_attributes。

private
def account_params
  params.require(:account).permit(:account_field1, users_attributes: [ :id, :name ])
end