Простая установка ассоциаций в вашей модели НЕ изменяет схему в любом случае, и этот код выдаст неопределенную ошибку столбца, если вы фактически не создадите столбец books.author_id посредством миграции.
Запуск генератор модели с author:belongs_to
или author:references
(которые являются псевдонимами) действительно добавляет столбец внешнего ключа к миграции, а также ассоциацию belongs_to :author
в модели.
# rails g model book title:string author:belongs_to
class CreateBooks < ActiveRecord::Migration[6.0]
def change
create_table :books do |t|
t.string :title
t.belongs_to :author, null: false, foreign_key: true
t.timestamps
end
end
end
Но ассоциация не на самом деле должно быть ограничение внешнего ключа . Если вы запустили генератор с author_id:bigint
, ассоциация будет работать, но у вас не будет ограничения внешнего ключа для гарантии ссылочной целостности.
Использование books:has_many
с другой стороны в генераторе вызовет плохую миграцию, так как has_many
ассоциация не является столбцом базы данных.