Как должна быть разработана эта модель? - PullRequest
1 голос
/ 10 марта 2011

В приложении Rails я хочу разрешить пользователям отправлять сообщения от одного к другому. Итак, у меня есть модель User, которая будет иметь это:

has_many :messages

Я думал, что модель Message будет иметь поле from, содержащее идентификатор пользователя, который ее отправил, и поле to, содержащее идентификатор пользователя, которому она адресована. Какова была бы лучшая практика для модели Messsage? Должен ли я генерировать это так:

rails g model Message from:integer to:integer title:string content:text

Как бы я связал это с пользователем? Должен ли я связать его с 2 пользователями, поскольку поля from и to ссылаются на существующих пользователей? Как бы я представлял эти отношения? Какие отношения я бы написал в модели сообщений? belongs_to :user?

Я чувствую, что должен быть способ позволить Rails управлять идентификаторами пользователей для меня, чтобы мне не приходилось создавать целочисленные поля самостоятельно.

Ответы [ 2 ]

6 голосов
/ 10 марта 2011
User

has_many :sent_messages, :class_name => "Message", :foreign_key => 'from'
has_many :received_messages, :class_name => "Message", :foreign_key => 'to'

Message

belongs_to :sender, :class_name => 'User', :foreign_key => 'from'
belongs_to :receiver, :class_name => 'User' :foreign_key => 'to'
2 голосов
/ 10 марта 2011

Если вы хотите и то и другое, вы, вероятно, должны сделать что-то вроде этого

has_many :sent_messages, :class_name => 'Message', :foreign_key => 'from'
has_many :received_messages, :class_name => 'Message', :foreign_key => 'to'

Это похоже на этот вопрос: Модель Rails has_many с несколькими foreign_keys

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...