I'm new to Rails, and I'm coming to it from a Django background. I've come to terms with the fact that models and the database schema are separate in Rails, online Django. However, I'm still getting to grips with migrations.
My question is fairly simple - how do I add a relationship to a model using a migration? For example, I have Artist
and Song
as empty models that subclass ActiveRecord::Base
at the moment, with no relationships whatsoever.
I need to move to doing this:
class Artist < ActiveRecord::Base
has_many :songs
end
class Song < ActiveRecord::Base
belongs_to :artist
end
But how do I change the schema to reflect this using rails g migrate
? I'm using Rails 3.1.3.
Now, in Rails 4 you can do:
class AddProcedureIdToUser < ActiveRecord::Migration
def change
add_reference :users, :procedure, index: true
end
end
to an existing Model
You have to add the foreign key in your migration file, something like this:
def change
create_table :songs do |t|
t.references :artist
end
add_index :songs, :artist_id
end
You can generate migration
rails g migration AddProcedureIdToUser procedure:references
Thanks
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With