0

Я пишу частную систему обмена сообщениями для своего веб-приложения. Подумайте об этом, сделав то же самое, что и отправку PM на свой типичный веб-сайт социальной сети, например Facebook или Twitter, или даже отправку электронной почты через Hotmail.Модель данных для частной системы обмена сообщениями

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 

Однако sender_id и recipient_id оба относятся к одной и той же области, что поле ID в модели роли. Какие изменения я должен сделать, чтобы интерпретатор знал, что это относится к этому полю. Существуют ли другие изменения, которые я должен сделать, например, таблицы соединений?

+1

Пожалуйста, введите код в отформатированный кодовый блок. Это облегчит людям чтение и понимание вашего вопроса. (Выделите свой код и введите Ctrl-K) –

ответ

1

Если я правильно читать ваш вопрос, вы должны внести изменения в модели, используя опцию class_name для belongs_to:

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

Я думаю, что внешние ключи выводятся, хотя, так что вы должны быть в состоянии чтобы оставить их.

+0

По умолчанию для внешнего ключа по адресу принадлежит_to is association_name_id, поэтому он предположил бы sender_id и recipient_id в вашем примере. –

+0

Должны ли внешние ключи быть «role_id»? Я хочу, чтобы он назывался sender_id, но как установить, что sender_id действительно ссылается на role_id? – alamodey

Смежные вопросы