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
Réponse acceptée

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
Auteur

ça fonctionne super merci !