我正在rails 3上开发一个消息系统。我的数据库结构大致如下:
users:
id
name
messages:
id
body
users_messages:
user_id
message_id
direction
is_read
created_at
我想我必须使用 *has_many :through* 关联才能使用关系模型:
class User < ActiveRecord::Base
has_many :user_messages
has_many :messages, :through => :user_messages
end
class UserMessages < ActiveRecord::Base
belongs_to :users
belongs_to :messages
end
class Messages < ActiveRecord::Base
has_many :user_messages
has_many :users, :through => :user_messages
end
我可以通过呼叫user.messages
和检测方向的传入/传出来获取所有用户的消息。我只是不太明白我如何建立一种能够做到的关系:
message.sender
message.recipient
user.messages.first.recipient ...
以及每条消息在 user_messages 表中至少需要 2 行:
user_id_sender , message_id, outgoing ....
user_id_recipient, message_id, incoming ....
也许我的数据库结构是错误的?一些机构可以提出更有效的设计吗?
先感谢您。