嵌套建模是否正确地执行此操作?

时间:2015-06-20 17:20:45

标签: ruby-on-rails

我正在开展一个新项目。我允许用户在网站上注册的地方。我想要完成的是,在他们用于注册的形式中,他们还添加了公司名称。这应该是另一个名为company的模型。

创建此人的人将是管理员。要让其他人成为公司的员工,管理员必须邀请他们。

我想知道如何设置它。我应该:

  • 为名为company的模型的用户注册创建一个嵌套模型,并在表单中添加公司名称。
  • 然后,用户应该拥有一个update_attribute,其中admin变为true。

该协会应该如何,用户属于公司,公司还有多少用户?

1 个答案:

答案 0 :(得分:0)

是的,你的问题相当广泛,但我可以在创建一个包含连接到多个模型对象的字段的表单方面向正确的方向推动。关键是使用fields_for helper ...

要做到这一点,我会做以下事情......

<强> company.rb

class Company < ActiveRecord::Base
    has_many :users
    accepts_nested_attributes_for :users
end

<强> user.rb

class User < ActiveRecord::Base
    belongs_to :company
end

<强> companies_controller.rb

class CompaniesController < ApplicationController
   def new
    @company = Company.new
    @user = User.new
   end

   def user_params
    params.require(:user).permit(:name, companies_attributes:[:name])
   end
end

<强>视图/公司/ new.html.erb

<%= form_for @user do |f| %>

    <%= f.label :name %><br />
    <%= f.text_field :name %>

    <%= fields_for @company do |u| %>

    <p>
        <%= u.label :name %><br />
        <%= u.text_field :name %>
    </p>

    <% end %>

    <p>
        <%= f.submit "Submit" %>
    </p>
<% end %>

您可以轻松地从此处获取它并使其更加复杂。