模型和嵌套表单

我正在构建一个为消费者和企业提供function的应用程序。 在创建模型时,我正在考虑拥有用户(消费者)和业务……每个企业也有用户,但用户不一定属于企业。 为了减少冗余,我会在用户和商业中的特定商业信息(地址,电话)中收集姓名,电子邮件等。

class Business < ActiveRecord::Base belongs_to :user end class User < ActiveRecord::Base has_one :business #only if business user, not consumer end 

这是配置所需关系的正确方法吗?

然后,当到了商业注册的时候,是否有可能(以及如何)拥有我的业务对象首先的嵌套表单,然后是用户…所以我按顺序收集信息? 我发现的所有示例/信息都显示了首先捕获用户信息的设置,然后是任何子模型。

在我的以下示例中,这是正确的:

  #grab business info  #grab user info 

感谢您的时间和帮助。

你需要拥有

  class Business < ActiveRecord::Base belongs_to :user end class User < ActiveRecord::Base has_one :business #only if business user, not consumer attr_accessible :business_attributes accepts_nested_attributes_for :business end 

forms应该是

  <%= form_for(@user) do |f| %> #grab user info <%= f.fields_for :business_attributes do |ff| %> #grab business info 

然后在update方法中使用update_attributes来更新用户

你提到企业可能有几个用户,所以它应该是:

 class Business < ActiveRecord::Base has_many :users end 

然后,用户将属于某个企业(可选)

 class User < ActiveRecord::Base belongs_to :business end 

在您的表单中,您首先要为业务打电话:

 form_for @business do |business_form| 

然后你可以编辑业务用户:

 business_form.fields_for :users do |user_form| 

如果它是您正在创建的尚未拥有任何用户的新业务,则可以在控制器中为该业务构建许多用户,以便用户子表单具有可以使用的对象。 在你的控制器中:

 5.times do @business.users.build end 

以上将为业务带来5个新的用户子表单。