28 Stimmen

Wie baut man eine Beziehung zwischen zwei Personen auf?

Ich habe die folgenden Modelle:

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

Welche Art von Rails-Modell assoc muss ich hinzufügen, so dass ich tun kann:

@user.network.title
@network.users

Gracias

62voto

daniel Punkte 9426

Also Netzwerk has_many Benutzer und ein Benutzer belongs_to Netzwerk.

Fügen Sie einfach eine network_id in die Benutzertabelle einfügen, falls Sie das noch nicht getan haben, und da es sich um eine foreign_key eine Indizierung lohnt.

rails generate migration AddNetworkIdToUsers

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

Im Netzwerkmodell tun:

class Network < ActiveRecord::Base
  has_many :users
end

Im Benutzermodell tun:

class User < ActiveRecord::Base
  belongs_to :network
end

9voto

klaffenboeck Punkte 6167

Je nach Ihrem Datenbank-Setup müssen Sie nur die folgenden Zeilen zu Ihren Modellen hinzufügen:

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

Falls Sie eine Einrichtung ohne network_id haben, sollten Sie Daniels Antwort folgen.

3voto

hula-san Punkte 31

Das ist mein Weg: laufen:

$rails generate migration AddNetworkIdToUsers

dann die Migrationsdatei konfigurieren:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X