AnA*_*ice 1 ruby-on-rails ruby-on-rails-3
我正在创建一个名为Chats的模型.我想为用户分配讨论.他们要么是聊天的一部分,要么不是......
所以我创建了一个模型聊天.
另一个表的标准Rails命名约定是什么?
ChatUsers?
虽然has_and_belongs_to_many这里是一个不错的选择,但我建议has_many :through改用.
从本质上讲,您将拥有一个明确的连接模型,您可以调用它ChatSession.
class Chat < ActiveRecord::Base
has_many :chat_sessions
has_many :users, :through => :chat_sessions
end
class User < ActiveRecord::Base
has_many :chat_sessions
has_many :chats, :through => :chat_sessions
end
class ChatSession < ActiveRecord::Base
belongs_to :user
belongs_to :chat
end
Run Code Online (Sandbox Code Playgroud)
现在,您将需要一个名为chat_sessionscolumn的用户:user_id,并且:chat_id.这是你的联接表.
你得到一个完全由你控制的模型,而不仅仅是由rails管理的一个愚蠢的连接表.因此,例如,如果您想跟踪特定用户在特定聊天中留下的消息数量,则可能是chat_sessions表格中的列.在大多数情况下,:through渲染的存在是habtm不必要的.也没有复杂性开销.
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |