0

Je suis en train d'écrire un système de messagerie privé pour mon application Web. Pensez simplement à faire la même chose que d'envoyer des MP sur votre site de réseautage social typique comme Facebook ou Twitter, ou même d'envoyer un courriel via Hotmail.Modèle de données pour un système de messagerie privé

I have come up with the following migration so far: 
class CreateMessages < ActiveRecord::Migration 
    def self.up 
    create_table :messages do |t| 
     t.integer :sender_id, :recipient_id 
     t.string :title 
     t.text :body 
     t.boolean :read 
     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :messages 
    end 
end 

Cependant, la sender_id et recipient_id se réfèrent tous deux au même champ, qui est le champ id dans le modèle de rôle. Quels changements dois-je faire pour que l'interprète sache qu'il fait référence à ce domaine. Y a-t-il d'autres changements que je dois faire tels que joindre des tables?

+1

Veuillez mettre votre code dans un bloc de code formaté. Il sera beaucoup plus facile pour les gens de lire et de comprendre votre question. (Mettez en surbrillance votre code et tapez Ctrl-K) –

Répondre

1

Si je lis bien votre question, vous devez faire le changement dans votre modèle en utilisant l'option class_name pour belongs_to:

belongs_to :sender, :class_name => 'Role', :foreign_key => 'sender_id' 
belongs_to :recipient, :class_name => 'Role', :foreign_key => 'recipient_id' 

Je pense que les clés étrangères sont inférées, cependant, de sorte que vous devriez être en mesure pour les laisser.

+0

La clé étrangère par défaut d'un appartient_to est ID_association_id, donc il devinerait sender_id et recipient_id dans votre exemple. –

+0

les clés étrangères doivent-elles être "role_id" à la place? Je veux qu'il soit nommé sender_id mais comment puis-je établir que sender_id fait vraiment référence à role_id? – alamodey

Questions connexes