模型和嵌套表单
我正在构建一个为消费者和企业提供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个新的用户子表单。