2013-03-13 2 views
0

Я пытаюсь внедрить систему обмена сообщениями среди пользователей.Jquery tokeninput rails message

Здесь модель базы данных, которую я пытаюсь реализовать.

user 
    id 

message 
    message_id 
    message_author_id 
    timestamp 

message_recipient 
    message_id 
    user_id 

message_status 
    message_status_id 
    message_id 
    user_id 
    is_read 
    is_deleted 
    read_datetime 
    deleted_datetime 

Отношение бы я считаю, имеет следовать

user 
    has_many :messages 
    has_many :message_recipient 
    has_many :message_status 

message 
    has_many: user => author_id 

message_recipient 
    belongs_to :message 
    belongs_to user 

message_status 
    belongs_to :message 
    belongs_to :user 

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

Во-вторых, цель состоит в реализации jquery.tokeninputs, и поэтому, насколько я понимаю, мне нужно убедиться, что многие пользователи смогут принимать поля автора со многими пользователями.

+0

вы должны разделить это на два вопроса. Я попытаюсь ответить на часть реализации. –

ответ

0

Что касается вашей реализации, я думаю, что вы можете иметь избыточную модель - зависит от того, что вы пытаетесь сделать, но это будет идти, как это:

class User < ActiveRecord::Base 
    has_many :messages 
    has_many :sent_messages, through: :messages 
    has_many :destined_messages, class_name: 'SentMessage' 
end 

# this class represents the original authored message, 
# i.e. it holds the body of the message 
class Message < ActiveRecord::Base 
    belongs_to :user # author 
    has_many :sent_messages 
end 

# this class represents a "copy" of the message 
# that has been sent to a particular user. 
# It also holds the status, which makes sense because 
# you want to log the status according to each user 
class SentMessage < ActiveRecord::Base 
    belongs_to :message 
    belongs_to :user 
end 

Вы можете даже объединить модели Message и SentMessage если вам не нужны дубликаты: просто сделайте копию тела для каждого получателя.

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