在Ruby On Rails中保存同一对象的倍数

时间:2010-10-21 19:25:09

标签: ruby-on-rails

我有一个组织数据库表,其中包含以下字段:

organisationid,organisationname,organisationaddressid,mainadminname,mainadminaddressid。

两个地址id是指向地址数据库表中两条记录的指针。地址数据库表包含以下字段:

addressid,addressline1,addressline2,addresstowncity,addresspostcode。

因此,当我创建新组织时,我想捕获以下信息:

organisationname
organisationaddressline1
organisationaddressline2
organisationaddresstowncity
organisationaddresspostcode
mainadminname
mainadminaddressline1
mainadminaddressline2
mainadminaddresstowncity
mainadminaddresspostcode

当我保存这些信息时,我想创建1个组织记录和两个地址记录。

我对如何在ROR中做到这一点感到茫然!

感谢任何建议。

感谢您的时间

嗅探

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

看起来不太标准的rails列名,所以我猜你可能正在使用遗留数据库,无论如何:

假设您的组织模型是这样的:

belongs_to :organization_address, :class_name => 'Address', :foreign_key => 'organisationaddressid'
belongs_to :main_admin_address, :class_name => 'Address', :foreign_key => 'mainadminaddressid'

# See http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
# Make the organization accept nested attributes for the addresses
accepts_nested_attributes_for :organization_address, :main_admin_address

您的表单可能看起来像带有不同地址的字段_

<% form_for Organization.new do |f| %>
  <%= f.text_field :name %><br />
  <% fields_for :organization_address do |oaf| %>
    <%= oaf.text_field :addressline1 %><br />
    <%= oaf.text_field :addressline2 %><br />
    ...
  <% end %>
  <%= f.text_field :name %><br />
  <% fields_for :main_admin_address do |maaf| %>
    <%= maaf.text_field :addressline1 %><br />
    <%= maaf.text_field :addressline2 %><br />
    ...
  <% end %>
<% end %>

之后,在你的控制器中

@organization = Organization.new(params[:organization])
@organization.save

应该保存组织模型以及两个地址模型。