рельсы: соединяющая модель с 2 другими моделями - PullRequest
0 голосов
/ 01 февраля 2012

Привет, у меня есть следующая модель:

Boys have_many relationships
Girls have_many relationships
Relationship belongs to boy
Relationship belongs to girl

Пока у меня есть следующее:

  def create
    @boy = Boy.find(current_boy.id)
    @relationship = @boy.relationships.create(:relationship)
    redirect_to boy_path(@boy)
  end

Это мой home.html.erb

<%= form_for([@boy, @boy.relationships.build]) do |f| %>
  <div class="field">
    <%= f.label :points %><br />
    <%= f.number_field :points %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Файл миграции:

  def change
    create_table :relationships do |t|
      t.integer :points
      t.references :boy
      t.references :girl

      t.timestamps
    end

    add_index :relationships, :boy_id
    add_index :relationships, :girl_id
  end

Так что отношения имеют «точки». Когда я отправляю форму, я хочу указать адрес электронной почты девушки.

Как мне поместить это как часть формы и исправить метод create, чтобы при отправке этой формы я создавал отношения между мальчиком и девочкой?

Большое спасибо.

1 Ответ

0 голосов
/ 01 февраля 2012

Во-первых, я бы подумал о модели Person (или как вы предпочитаете) с гендерным атрибутом.Это значительно упростит следующее:

Вложите ваши ресурсы:

resources :people do
  resources :relationships
end

Расскажите об этом модели:

class Person < ActiveRecord::Base
  ...
  accepts_nested_attributes_for :relationships
  ...
end

В приложении / views / Relations / _formform_for должен принимать @person и @ relations.

Затем, после того, как человек создан, он может перейти к / people / 1 / relations # index, где он может выполнять все функции CRUD.

Это устарело, но все еще полезно: http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

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