2 associations "identiques" en model

Par fital, il y a 10 ans


Hello à tous !

Voilà je suis actuellement en train de coder un forum comme celui-ci ! sur rails et je galère sur un truc "bête".

J'ai une table messages et une table topic comme suit :

create_table :forums_messages do |t| t.references :forum, index: true, foreign_key: true t.references :forums_topic, index: true, foreign_key: true t.references :user, index: true, foreign_key: true t.text :message t.timestamps null: false create_table :forums_topics do |t| t.string :title t.string :slug, unique: true t.integer :status, default:0 #épinglé, normal, lock t.references :forum, index: true, foreign_key: true t.references :user, index: true, foreign_key: true t.text :message t.integer :last_message_id, default: 0 t.timestamps null: false

Et je souhaite que le champ forums_topics.last_message_id soit en relation avec le message dans la table forums_messages

Pour le moment j'ai essayé toute sorte comme ceci :

class ForumsMessage < ActiveRecord::Base belongs_to :forums_topic belongs_to :forums_topic, :class_name => 'LastMessage', :foreign_key => 'id' belongs_to :user belongs_to :forum

Et Topic :

class ForumsTopic < ActiveRecord::Base has_one :forums_message, :class_name => 'LastMessage', :foreign_key => 'last_message_id' belongs_to :forum belongs_to :user has_many :forums_messages

Mais comme vous l'aurez deviné, ça ne fonctionne pas :/

Merci d'avance !

2 réponses

shinix, il y a 10 ans

Salut, essaie ça :-)

class ForumsMessage < ActiveRecord::Base belongs_to :forums_topic belongs_to :user belongs_to :forum class ForumsTopic < ActiveRecord::Base belongs_to :last_post, :class_name => 'ForumsMessage', :foreign_key => 'last_message_id' belongs_to :forum belongs_to :user has_many :forums_messages

Ensuite, il te suffit de récuperer en faisant topic.last_post.message

fital, il y a 10 ans

ça fonctionne super merci !