J'utilise Rails 4.2.3 J'ai un modèle avec deux relations avec le même type d'objet,Comment construire mon modèle lorsqu'il contient deux relations avec le même type d'objet?
class MyObject < ActiveRecord::Base
belongs_to :user
has_many :my_object_times
…
has_one :my_object_time, foreign_key: :linked_my_object_time_id
Le nom de colonne dans ma base de données pour le « has_one » est « linked_my_object_time_id. » Ce que je n'arrive pas à comprendre, c'est comment écrire le modèle pour l'objet lié. Je sais que je dois mettre deux clauses "belongs_to", mais je ne sais pas comment écrire la seconde. Jusqu'à présent, j'ai
class MyObjectTime < ActiveRecord::Base
belongs_to :my_object
Quand je vais sauver mon objet ...
my_object.linked_my_object_time = my_object_time
my_object.save
Je reçois l'erreur « NoMethodError (méthode non définie linked_my_object_time = » pour # »
"linked_my_object_time" est une clé étrangère de "MyObject" à "MyObjectTime". Dans la mesure où cela est vrai, le "has_one: linked_my_object_Time" ne devrait-il pas appartenir à? – Dave
L'association belongs_to est toujours pour le modèle de la table qui contient la clé étrangère. Si dans votre spécification, vous voulez que MyObject ait ** ** MyObjectTime, alors la clé étrangère sera dans la table MyObjectTime et l'association belongs_to dans le modèle MyObjectTime. Si vous voulez que MyObjectTime ait ** un ** MyObject, alors vous utiliserez l'association has_one dans MyObjectTime et un belongs_to dans MyObject. La clé étrangère serait dans la table MyObject. – hypern
donner ce gars sa prime :) – jaydel