Bonjour,

J'ai créé le Model suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class CreateVilles < ActiveRecord::Migration
  def self.up
    create_table :villes do |t|
      t.string :nom
      t.references :Etat
 
      t.timestamps
    end
  end
 
class CreateLignes < ActiveRecord::Migration
  def self.up
    create_table :lignes do |t|
      t.references :depart
      t.references :arrivee
      t.integer :distance
      t.datetime :heure_depart
      t.integer :taxes_ligne
 
      t.timestamps
    end
  end
depart et arrivee sont des villes.
j'ai donc mis ceci dans le contrôleur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
class Ville < ActiveRecord::Base
  has_many :Lignes
  belongs_to :Etat
end
 
class Ligne < ActiveRecord::Base
  belongs_to :depart, :class_name => 'Ville', :foreign_key => 'depart_id'
  belongs_to :arrivee, :class_name => 'Ville', :foreign_key => 'arrivee_id'
  has_many :Vols
end
lors de la création, tout "semble" bien se passer mais lorsque j'essaie d'afficher (donc le index.erb.html ou le show.erb.html), j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 ActiveRecord::RecordNotFound in Lignes#show
 
Showing lignes/show.html.erb where line #4 raised:
 
Couldn't find Ligne without an ID
 
Extracted source (around line #4):
 
1: <p>
2:   <b>Depart:</b>
3:   <%=h Ligne.find(@ligne.depart_id).nom %>
4: </p>
5: 
6: <p>
7:   <b>Arrivee:</b>
 
RAILS_ROOT: C:/Documents and Settings/Sylvain Desbureaux/Mes documents/NetBeansProjects/SeventyPlanesCalculator
Application Trace 
 
C:/Program Files/NetBeans 6.1/ruby1/jruby-1.0.3/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:1248:in `find_from_ids'
C:/Program Files/NetBeans 6.1/ruby1/jruby-1.0.3/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:504:in `find'
app/views/lignes/show.html.erb:4:in `_run_erb_47app47views47lignes47show46html46erb'
app/controllers/lignes_controller.rb:20:in `show'
...
 
Request
 
Parameters:
 
{"id"=>"2"}
Sachant que le code <%=h Ligne.find(@ligne.depart_id).nom %> marche bien dans les cas ou j'ai une relation avec une seul références. Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<td><%=h Etat.find(ville.etat_id).nom %></td>
D'ailleurs, je trouve pas ça très propre dons si il ya une manière "classe" de le faire... (j'ai essayé ville.Etat.nom mais ça marche pas)