Une autre petite question, si en plus d’avoir des artists, on a des
genres, des albums et des titres, que l’on veux faire des liaisons
has_and_belongs_to_many entre ces tables :
genres <=> artists
genres <=> albums
artists <=> albums
En fait, le lien en question, doit correspondre à qqchose dans la vie
vraie ?
C’est qu’ils forment un groupe, un couple dans la vie, une bande de
copain ou je
sais quoi d’autre ?
En fait, le lien en question, doit correspondre à qqchose dans la vie
vraie ?
C’est qu’ils forment un groupe, un couple dans la vie, une bande de
copain ou je
sais quoi d’autre ?
Moi aussi ça m’interesse, parceque je me casse aussi les dents
sur les relations réflexives en N-N
Apparemment il faut utiliser :through pour rester dans les
conventions, et ce n’est pas simple.
…
Ce n’est pas une question de conventions, tu as le choix
entre has_and_belongs_to_many (habtm) et has_many :through
(hmt), hmt s’avère plus puissant car tu manipules la jointure
comme un modèle Active Record, tu peux l’enrichir d’attributs AR…
Mais rien ne t’empêche d’utiliser habtm.
Pour en revenir à la question de Mun :
create_table :artists do |t|
t.column :name, :string
t.column :firstname, :string
end
create_table :similarities do |t|
t.column :artist_id, :integer, :null => false
t.column :similar_artist_id, :integer, :null => false
end
class Artist < ActiveRecord::Base
has_many :similarities
has_many :similar_artists, :through => :similarities
end
class Similarity < ActiveRecord::Base
belongs_to :artist
belongs_to :similar_artist,
:foreign_key => ‘similar_artist_id’,
:class_name => ‘Artist’
end