arnaud
1
Bonjour,
Comme chaque jour (ou presque) je rencontre un problème ![:slight_smile: :slight_smile:](//test.ruby-forum.com/images/emoji/twitter/slight_smile.png?v=6)
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” ![:slight_smile: :slight_smile:](/images/emoji/twitter/slight_smile.png?v=6)
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