嵌套建模正确的方式来做到这一点?
问题描述:
我正在开发一个新项目。我允许用户在网站上注册的地方。我想要完成的是在他们用于注册的表单中,他们还添加了公司名称。这应该是另一种叫做公司的模式。嵌套建模正确的方式来做到这一点?
创建这个的人将是管理员。对于其他人成为公司的员工,管理员将不得不邀请他们。
我想知道如何设置它。我应该:
- 在名为company的模型的用户注册中创建一个嵌套模型,他们在表单上添加他们的公司名称。
- 用户应该拥有一个update_attribute,其中admin成为true。
此外,该关联应该如何,一个用户属于一个公司,一个公司has_many用户?
答
对,你的问题相当广泛,但是我可以在创建一个带有连接到多个模型对象的字段的窗体的正确方向上推动你。关键是在使用fields_for帮手......
要做到这一点,我会做下列..
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 %>
您可以轻松地把它从这里,使之更加复杂,因为你喜欢它。
不应该是一家公司拥有多少用户,而是一家用户属于公司。作为一个公司可以有几个人连接到它(员工),然后分离将使用户有一个管理布尔值来查看谁是该公司的管理员? – user2755537
你是对的,我的不好。更新,并应按照你的需要工作 –
好的,关于管理员权限,我建议你考虑一下cancan的授权。 –