我基于SO帖子创建了一个名为UserHasMessages的模型。我认为这似乎给我带来了一些挑战:如果我用Rails 3复数命名模型,该怎么办?
我如何参考
has_many
?我应该使用has_many:user_has_messageses
?我该如何做连接?我曾尝试User.joins(:user_has_messages),这是可悲的:(
问:
我应该以某种方式将名称更改为UserHasMessage,如果是这样,怎么
?如果我继续为复数,我该如何处理这些案件
我基于SO帖子创建了一个名为UserHasMessages的模型。我认为这似乎给我带来了一些挑战:如果我用Rails 3复数命名模型,该怎么办?
我如何参考has_many
?我应该使用has_many :user_has_messageses
?
我该如何做连接?我曾尝试User.joins(:user_has_messages),这是可悲的:(
问:
我应该以某种方式将名称更改为UserHasMessage,如果是这样,怎么
?如果我继续为复数,我该如何处理这些案件
你可以往其中加一个新的迁移
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
。
完成:)
你可以用你的遗留表使用相同的语法:
class OtherClass < ActiveRecord::Base
has_many :user_has_messages, :class_name => 'UserHasMessages'
end
感谢,这与我们的数据库遗留下来的帮助! – Simonini 2013-04-12 14:52:58
避免以S结尾的类名,就像魔鬼避免圣水一样。 UserHasMessages这个名字是一个非常糟糕的选择。你不会创建一个数据库表来检查某些东西。相反,您有一个用户模型,一个消息模型和一个UserMessage模型。然后,如果你想检查用户消息,你只需创建一个方法来做到这一点。该协会应该是:
User has many messages through user_messages
你会得到像current_user.messages这样的用户消息。
我强烈建议您将您的设计更改为我所描述的:)
啊,好吧,甜蜜,谢谢你的一步一步来 – Angela 2011-04-01 03:39:03