Сохранение нескольких объектов в Ruby On Rails - PullRequest
0 голосов
/ 21 октября 2010

У меня есть таблица базы данных организации, которая содержит следующие поля:

имя_организации, имя_организации, адрес_организации, имя_администратора, имя_адресного_адреса.

Два идентификатора адреса являются указателями на две записи втаблица базы данных адресов.Таблица базы данных адресов содержит следующие поля:

addressid, addressline1, addressline2, addresstowncity, addresspostcode.

Поэтому при создании новой организации я хочу получить следующую информацию:

organisationname
organisationaddressline1
organisationaddressline2
organisationaddresstowncity
organisationaddresspostcode
mainadminname
mainadminaddressline1
mainadminaddressline2
mainadminaddresstowncity
mainadminaddresspostcode

И когда я сохраняю эту информацию, я хочу создать 1 запись организации и две записи адресов.

Я не знаю, как это сделать в ROR!

Любые предложенияс благодарностью принят.

Спасибо за ваше время

Сниффер

Ответы [ 2 ]

2 голосов
/ 22 октября 2010

Не совсем стандартные имена столбцов рельсов, так что я полагаю, вы можете работать с устаревшей БД, во всяком случае:

Предположим, что модель вашей организации была примерно такой:

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

Ваша форма, вероятно, будет выглядеть примерно так с fields_for разных адресов:

<% 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

Следует сохранить модель организации, а также две модели адресов.

2 голосов
/ 21 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...