Я новичок в Rails, и я прихожу к нему с фона Django. Я пришел к соглашению с тем, что модели и схема базы данных являются отдельными в Rails, онлайн-Django. Тем не менее, я все еще понимаю, что происходит с миграциями.Rails 3: принадлежит_to, has_one и Migrations
Мой вопрос довольно прост - как мне добавить отношение к модели с помощью миграции? Например, у меня есть Artist
и Song
как пустые модели, которые подкласс ActiveRecord::Base
на данный момент, без каких-либо отношений.
мне нужно двигаться, чтобы сделать это:
class Artist < ActiveRecord::Base
has_many :songs
end
class Song < ActiveRecord::Base
belongs_to :artist
end
Но как я могу изменить схему, чтобы отразить это с помощью rails g migrate
? Я использую Rails 3.1.3.
ОК - и что, если это существующая таблица, мне нужно использовать что-то другое, кроме 'create_table'? –
В этом случае вы можете использовать 'add_column: songs,: artist_id,: int', или если вы хотите внести несколько изменений в таблицу' change_table' с синтаксисом, подобным приведенному выше. Подробнее о миграции вы можете прочитать здесь: http://guides.rubyonrails.org/migrations.html – rabusmar
Спасибо. Я использовал 'change_table', но теперь, когда я перехожу в« Песни »в ActiveAdmin, я получаю' no такой столбец: artist.song_id'. Я сделал что-то не так? Эта колонка не должна существовать, поскольку у исполнителя может быть много песен ... –