arnaud
1
Bonjour,
Comme chaque jour (ou presque) je rencontre un problème
J’ai des équipements informatiques qui ont des cartes (réseaux,
fibres…)
J’ai donc un modèle “equipment” et un modèle “card”
Les relations sont de ce type :
equipment (0,n)—> cards <—(0,n) interfaces
La table interfaces contient le nom (eth0, eth1…, hba1, hba2…)
J’ai ensuite plusieurs autres modèles qui héritent de “card”
class Card < ActiveRecord::Base
belongs_to :interface
belongs_to :equipment
end
class NetworkCard < Card
end
class SanCard < Card
end
J’ai une colonne “type” dans la table “cards” qui est remplie
correctement avec les classes des différentes cartes.
Par contre, lorsque j’utilise le code suivant
<%= @equipment.network_cards.map{|m| “m.interface.name:
#{m.adresse_ip}
”} %>
j’ai l’erreur suivante:
undefined method `network_cards’ for…
Ce qui est bizarre c’est que le code suivant :
<%= @equipment.cards.map{|m| “#{m.class}
”} %>
me renvoit bien la bonne classe (par exemple NetworkCard)
arnaud
2
J’ai oublié de dire “merci par avance pour votre aide”
arnaud
3
Salut Arnaud
Peux tu nous copier ta déclaration de Equipment ?
Si tu as mis un has_many :cards, la méthode network_cards ne sera pas
présente…
arnaud
4
Thibaut Barrère wrote:
Salut Arnaud
Peux tu nous copier ta déclaration de Equipment ?
Si tu as mis un has_many :cards, la méthode network_cards ne sera pas
présente…
Effectivement j’ai “has_many :cards”
Il faudrait que j’ai également
has_many :network_cards
has_many :san_cards
… ??
j’ai préféré rajouter quelques méthodes de ce genre dans equipment.rb :
def network_cards
NetworkCard.find_all_by_equipment_id(self.id)
end
Merci quand même!
arnaud
5
Regarde par ici :
Example: A Firm class declares
has_manyhttp://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#M000530:clients,
which will add:
- Firm#clients (similar to Clients.find :all, :conditions => “firm_id
= #{id}”)
- Firm#clients<<
- Firm#clients.delete
- Firm#clients=
- Firm#client_ids=
- Firm#clients.clear
- Firm#clients.empty? (similar to firm.clients.size == 0)
- Firm#clients.size (similar to Client.count “firm_id = #{id}”)
- Firm#clients.find (similar to Client.find(id, :conditions =>
“firm_id = #{id}”))
- Firm#clients.build (similar to Client.new(“firm_id” => id))
- Firm#clients.create (similar to c = Client.new(“firm_id” => id);
c.save; c)
a+
Thibaut