J'ai une application rails avec les modèles suivants:Rails association modèle multiple
User (id)
Version (id, post_id, creator_id)
Post (id)
configuration Jusqu'à présent est la suivante:
User.rb:
has_many :versions
Version.rb:
belongs_to :creator, :class_name => "User"
belongs_to :post
Post.rb:
has_many :versions
Maintenant, je voudrais lier un utilisateur aux messages qu'il a à travers la table des versions, et pour rendre le pire, cette connexion doit être appelée questions. Je pensais quelque chose comme ceci:
Ajouté à User.rb:
has_many :questions, :class_name => "Post", :source => :post, :through => :versions
Le problème est que cela ne fonctionne pas et ne devrait probablement pas, car il ne sait pas ce que le nom de la clé utilisateur est dans la tables de versions.
Message d'erreur:
SQLite3 :: SQLException: pas de colonne: versions.user_id:. SELECT COUNT (*) FROM "messages" INNER JOIN "versions" ON "messages" "id" = " versions ». "post_id" où "versions". "user_id"= 1
Je suis à une perte, aider!
Note: La seule relation qui ne fonctionne est la dernière d'une users <==> posts
aka users.questions
pas clair - la ligne 'has_many: questions,: class_name => "Post"' est que pour l'utilisateur ou la poste? Si pour poster, vous pouvez supprimer tous les trucs de publication. –
J'ai clarifié, c'est dans le modèle User ... – Nayish
Avez-vous envisagé d'utiliser 'vestal_versions' (https://github.com/laserlemon/vestal_versions) pour le versioning? –