Ho i seguenti modelli:Come impostare una relazione uno a molti?
User (id, name, network_id)
Network(id, title)
Che tipo di Rails modello assoc devo aggiungere in modo che io possa fare:
@user.network.title
@network.users
Grazie
Ho i seguenti modelli:Come impostare una relazione uno a molti?
User (id, name, network_id)
Network(id, title)
Che tipo di Rails modello assoc devo aggiungere in modo che io possa fare:
@user.network.title
@network.users
Grazie
modo rete has_may
utenti e utenti belongs_to
rete.
Basta aggiungere un network_id
alla tabella utenti se ancora non lo è e anche dal momento che è uno foreign_key
vale la pena indicizzarlo.
rails generate migration AddNetworkIdToUsers
class AddNetworkIdToUsers < ActiveRecord::Migration
def change
add_column :users, :network_id, :integer
add_index :users, :network_id
end
end
Nel modello di rete fanno
class Network < ActiveRecord::Base
has_many :users
end
nel modello di utente:
class User < ActiveRecord::Base
belongs_to :network
end
Secondo il database-setup, è sufficiente aggiungere il seguente linee ai tuoi modelli:
Nel caso in cui si disponga di una configurazione senza network_id, si dovrebbe andare con risposta daniels.
Questo è il mio modo: run:
$rails generate migration AddNetworkIdToUsers
poi config file di migrazione:
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
Non c'è bisogno per la migrazione, la NETWORK_ID è (a seconda della domanda) già nella tabella – klaffenboeck
vero che :). solo per i futuri lettori in modo che sappiano come aggiungere l'id. – daniel
punto valido, concordato. Ti ha nuovamente sviato e mi dispiace per quello :-) – klaffenboeck