Ruby on rails 模型和嵌套表单
我正在构建一个应用程序,为消费者和企业提供功能。在创建模型时,我考虑的是用户(消费者)和业务……每个业务都有用户,但用户不一定属于某个业务。为了减少冗余,我会在用户中收集姓名、电子邮件等信息,并在业务中收集特定的业务信息(地址、电话)Ruby on rails 模型和嵌套表单,ruby-on-rails,model,nested-forms,Ruby On Rails,Model,Nested Forms,我正在构建一个应用程序,为消费者和企业提供功能。在创建模型时,我考虑的是用户(消费者)和业务……每个业务都有用户,但用户不一定属于某个业务。为了减少冗余,我会在用户中收集姓名、电子邮件等信息,并在业务中收集特定的业务信息(地址、电话) class Business < ActiveRecord::Base belongs_to :user end class User < ActiveRecord::Base has_one :business #only if bus
class Business < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_one :business #only if business user, not consumer
end
class业务
这是配置所需关系的正确方法吗
那么,到了商业登记的时候,是否有可能(以及如何)在我的业务对象是第一个,然后是用户的地方有嵌套的表单……所以我是按这个顺序收集信息的?我找到的所有示例/信息都显示了先捕获用户信息,然后捕获任何子模型的设置
在下面的示例中,这是否正确:
<%= form_for(@business) do |f| %>
#grab business info
<%= f.fields_for :user do |ff| %>
#grab user info
#获取业务信息
#获取用户信息
感谢您的时间和帮助。您提到企业可能有多个用户,因此应该是:
class Business < ActiveRecord::Base
has_many :users
end
然后,您可以编辑业务用户:
business_form.fields_for :users do |user_form|
如果您正在创建的新业务尚未有任何用户,则可以在控制器中为该业务生成所需的任意数量的用户,以便用户子窗体具有要使用的对象。在控制器中:
5.times do
@business.users.build
end
上述内容将为业务生成5个新的用户子表单。您需要
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
class业务
形式应该是
<%= form_for(@user) do |f| %>
#grab user info
<%= f.fields_for :business_attributes do |ff| %>
#grab business info
#获取用户信息
#获取业务信息
然后使用update方法中的update_属性更新用户
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
<%= form_for(@user) do |f| %>
#grab user info
<%= f.fields_for :business_attributes do |ff| %>
#grab business info