我基於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