How to setup a one to many relationship?

AnApprentice picture AnApprentice · Dec 18, 2011 · Viewed 27.2k times · Source

I have the following models:

User (id, name, network_id)
Network(id, title)

What kind of Rails model assoc do I need to add so that I can do:

@user.network.title
@network.users

Thanks

Answer

daniel picture daniel · Dec 18, 2011

so network has_many users and a user belongs_to network.

Just add a network_id to users table if you still haven't and also since it's a foreign_key is worth indexing it.

rails generate migration AddNetworkIdToUsers

class AddNetworkIdToUsers < ActiveRecord::Migration
  def change
    add_column :users, :network_id, :integer
    add_index  :users, :network_id
  end
end

In the network model do:

class Network < ActiveRecord::Base
  has_many :users
end

In the user model do:

class User < ActiveRecord::Base
  belongs_to :network
end