Bonjour,
dans mon application, je remplie ma base à partir d’un fichier XML avec
Hpricot.
une fois l’ objet fichier sauvegardé en base, je crée pas mal d’objets,
dont des connections.
Les connections edge ont les relations suivantes :
class Connection < ActiveRecord::Base
[…]
has_many :connection_edges
class ConnectionEdge < ActiveRecord::Base
belongs_to :aspen_topo_file
belongs_to :device
belongs_to :connection
belongs_to :usr_port, :class_name => “Port”, :foreign_key =>
“usr_port_id”
belongs_to :ntw_port, :class_name => “Port”, :foreign_key =>
“ntw_port_id”
belongs_to :main_vl2si, :class_name => “Device”, :foreign_key =>
“main_vl2si_id”
belongs_to :alter_vl2si, :class_name => “Device”, :foreign_key =>
“alter_vl2si_id”
belongs_to :protection_ntw_port, :class_name => “Port”, :foreign_key
=> “protection_ntw_port_id”
has_many :paths
end
Une fois récupéré les attributs de mon connection_edge, je le sauve :
@connection =
Connection.find_by_id_and_topo_file_id(connection.attributes[“ConnectionID”].to_i,@topo_file.id)
new_conn_edge = ConnectionEdge.new
new_conn_edge.connection = @connection
[… récupératon des autres attributs via XML]
#Sauvegarde
if new_conn_edge.save
logger.info(format_date_log(Time.now) +"
L’extremité de la connexion " + new_conn_edge.connection.description + "
[" + new_conn_edge.connection.id.to_s + “]” + " sur l’équipement + " +
new_conn_edge.device.name + " [" + new_conn_edge.device.id.to_s + “]” +
“a été créé”)
j’ai bien vérifié que les valeurs mises dans l’objet étaient bonnes mais
lorsque rails tente de sauvegarder l’objet,
le code me renvoie l’erreur suivante :
NoMethodError in topo filesController#create
undefined method `prefetch_primary_key?’ for
#Connection:0x7f8c09ca5778
RAILS_ROOT: /home/sylvain/NetBeansProjects/Topo2Db
Application Trace | Framework Trace | Full Trace
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/attribute_methods.rb:251:in
method_missing' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/associations/association_proxy.rb:177:in
send’
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/associations/association_proxy.rb:177:in
method_missing' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:2492:in
create_without_callbacks’
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/callbacks.rb:220:in
create_without_timestamps' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/timestamp.rb:29:in
create’
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:2472:in
create_or_update_without_callbacks' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/callbacks.rb:207:in
create_or_update’
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:2200:in
save_without_validation' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/validations.rb:901:in
save_without_dirty’
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/dirty.rb:75:in
save_without_transactions' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/transactions.rb:106:in
save’
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/database_statements.rb:66:in
transaction' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/transactions.rb:79:in
transaction’
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/transactions.rb:98:in
transaction' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/transactions.rb:106:in
save’
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/transactions.rb:118:in
rollback_active_record_state!' /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/transactions.rb:106:in
save’
app/controllers/topo_files_controller.rb:850:in create' app/controllers/topo_files_controller.rb:643:in
each’
app/controllers/topo_files_controller.rb:643:in create' app/controllers/topo_files_controller.rb:638:in
each’
app/controllers/topo_files_controller.rb:638:in create' app/controllers/topo_files_controller.rb:71:in
create’
Sachant que j’ai déjà créé des objets avec d’autres en référence (pas
par rapport aux connections certes), j’arrive pas à voir mon erreur…
Vous auriez une idée ?
Merci d’avance