rails,模型命名问题

AnA*_*ice 1 ruby-on-rails ruby-on-rails-3

我正在创建一个名为Chats的模型.我想为用户分配讨论.他们要么是聊天的一部分,要么不是......

所以我创建了一个模型聊天.

另一个表的标准Rails命名约定是什么?

ChatUsers?

Max*_*yak 8

虽然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不必要的.也没有复杂性开销.


Zab*_*bba 5

如果它是一个连接表,它将是由'_'和表名的字母顺序连接的表名:

chats_users
Run Code Online (Sandbox Code Playgroud)