Если я использую атрибут: class_name для has_one, что я добавлю в миграцию? - PullRequest
6 голосов
/ 30 января 2010

В моем приложении Rails есть модель, которая использует :class_name атрибут для has_one:

class Foo < ActiveRecord:Base
  has_one :main_bar, :class_name => "Bar"

  # ...
end

Я немного не уверен, что сейчас нужно включить в миграцию для этого класса. Могу ли я использовать ссылки? Что Rails будет искать в качестве имени столбца для :main_bar? Могу ли я сделать это так?

class CreateFoos < ActiveRecord::Migration
  def self.up
    create_table :foos do |t|
      t.references :main_bar
    end
  end

  def self.down
    drop_table :foos
  end
end

Спасибо!

1 Ответ

7 голосов
/ 30 января 2010

Вы ничего не кладете в таблицу с отношением has_one. Foreign_key входит в другую таблицу. В приведенном выше примере вам необходимо добавить внешний ключ в таблицу bars.

В миграции вы можете использовать:

t.references :foo

или

t.integer :foo_id

Любой из них будет работать.

...