How to setup a one to many relationship?

后端 未结 3 1361
轻奢々
轻奢々 2021-02-05 05:36

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:

相关标签:
3条回答
  • 2021-02-05 05:45

    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
    
    0 讨论(0)
  • 2021-02-05 05:53

    This is my way: run:

    $rails generate migration AddNetworkIdToUsers
    

    then config migration file:

    class AddNetworkIdToUsers < ActiveRecord::Migration[5.1]
    
      def up
    
        add_column :users, :network_id, :integer
        add_index  :users, :network_id
      end
    
      def down
    
        remove_index :users, :network_id
        remove_column :users, :network_id
      end
    
    end
    
    0 讨论(0)
  • 2021-02-05 05:58

    According to your database-setup, you just have to add the following lines to your models:

    class User < ActiveRecord::Base
      belongs_to :network
      # Rest of your code here
    end
    
    class Network < ActiveRecord::Base
      has_many :users
      # Rest of your code here
    end
    

    In case you have a setup without network_id, you should go with daniels answer.

    0 讨论(0)
提交回复
热议问题