J'ai deux modèles:rails HABTM versus view (formtastic)
Le modèle NetworkObject essaie de décrire "hosts". Je veux avoir une règle avec la source et la destination, donc j'essaie d'utiliser les deux objets de la même classe car cela n'a pas de sens de créer deux classes différentes.
class NetworkObject < ActiveRecord::Base
attr_accessible :ip, :netmask, :name
has_many :statements
has_many :rules, :through =>:statements
end
class Rule < ActiveRecord::Base
attr_accessible :active, :destination_ids, :source_ids
has_many :statements
has_many :sources, :through=> :statements, :source=> :network_object
has_many :destinations, :through => :statements, :source=> :network_object
end
Pour construire le HABTM j'ai choisi le modèle JOIN. dans ce cas j'ai créé un modèle nommé Déclaration avec:
class Statement < ActiveRecord::Base
attr_accessible :source_id, :rule_id, :destination_id
belongs_to :network_object, :foreign_key => :source_id
belongs_to :network_object, :foreign_key => :destination_id
belongs_to :rule
end
Le problème est: est juste d'ajouter deux belongs_to à la même classe en utilisant différents FOREIGN_KEYS? J'ai essayé toutes les combinaisons comme:
belongs_to :sources, :class_name => :network_object, :foreign_key => :source_id
mais pas de succès .. tout ce que je fais mal?
c'était l'un des mes essais. N'a pas fonctionné. Je pense que peut-être: source est un mot réservé .. de toute façon je l'ai réparé en créant deux modèles Dst et Src et puis je fais un héritage de NetworkObject. C'est de la saleté, mais ça a marché :-) –