Если я использую: атрибут Class_name для has_one, что я положил в миграцию?

StackOverflow https://stackoverflow.com/questions/2167090

Вопрос

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

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

  # ...
end

Я немного не уверен, что вносить в миграцию для этого класса сейчас. Могу ли я использовать ссылки? Что будут искать рельсы как имя столбца для :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

Спасибо!

Это было полезно?

Решение

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

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

t.references :foo

или:

t.integer :foo_id

Либо один будет работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top