jeudi, novembre 09, 2006

Activerecord et les clef étrangère (foreign key)

Si vous voulez utilser activerecord sur une base de données existante et qui ne suit pas les conventions "activerecord", vous aurez surement besoin de spécifier le nom de la clef étrangère, voilà comment faire:
class Task < ActiveRecord::Base
  set_table_name "tasks"
  set_primary_key "task_id"
  
  has_many :task_logs, :foreign_key => "task_log_task"
end
class TaskLog < ActiveRecord::Base
  set_table_name "task_log"
  set_primary_key "task_log_id"
  
  belongs_to :task, :foreign_key => "task_log_task"
end
Technorati tags:

2 commentaires:

Anonyme a dit…

bonjour,

est-ce qu'on peut gérer plusieurs foreign keys sur une même table avec ce système ?
par exemple j'ai une table user avec plusieurs fois des foreign keys sur un table de villes (ville de naissance, ville actuelle, ville du lieu de travail par ex), est-ce que je vais pouvoir spécifier plusieurs foreign keys comme ceci

belongs_to :user, :foreign_key => "ville_naissance"
belongs_to :user, :foreign_key => "ville_actuelle"
belongs_to :user, :foreign_key => "ville_travail"

Benjamin Francisoud a dit…

Je ne sais pas je n'ai jamais eu besoin de le faire mais je suppose que oui.

Regarde dans la documentation de "belongs_to" ;) http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#M000657