我根据一些 SO 帖子创建了一个名为 UserHasMessages 的模型。我认为这似乎给我带来了一些挑战:
我如何引用它
has_many
?我应该使用 has_many:user_has_messageses
吗?我该如何加入?我试过 User.joins(:user_has_messages) 很伤心:(
问题:
我应该以某种方式将名称更改为 UserHasMessage,如果是,如何更改?
如果我保持复数形式,我该如何处理这些情况?
我根据一些 SO 帖子创建了一个名为 UserHasMessages 的模型。我认为这似乎给我带来了一些挑战:
我如何引用它has_many
?我应该使用 has_many:user_has_messageses
吗?
我该如何加入?我试过 User.joins(:user_has_messages) 很伤心:(
问题:
我应该以某种方式将名称更改为 UserHasMessage,如果是,如何更改?
如果我保持复数形式,我该如何处理这些情况?
您可以使用与旧表相同的语法:
class OtherClass < ActiveRecord::Base
has_many :user_has_messages, :class_name => 'UserHasMessages'
end
您可以添加一个新的迁移
rails g migration rename_user_has_messages
在里面你写:
class RenameUserHasMessages < ActiveRecord::Migration
def self.up
rename_table :user_has_messages, :user_messages
end
def self.down
rename_table :user_messages, :user_has_messages
end
end
(表格总是复数)
运行迁移。
将您的文件从 重命名user_has_messages.rb
为user_message.rb
,并将您的类从 重命名UserHasMessages
为UserMessage
。
完毕 :)
避免以 S 结尾的类名,就像魔鬼避免圣水一样。UserHasMessages 这个名字是一个非常糟糕的选择。您不会创建数据库表来检查某些内容。相反,您有一个 User 模型、一个 Message 模型和一个 UserMessage 模型。然后,如果要检查用户消息,只需创建一个方法即可。该协会应该是:
User has many messages through user_messages
你会得到像 current_user.messages 这样的用户消息。
我强烈建议您将设计更改为我描述的设计:)