2

いくつかの SO 投稿に基づいて UserHasMessages というモデルを作成しました。これは私にとっていくつかの課題を生み出しているようです:

  • で参照するにはどうすればよいhas_manyですか?has_many を使用する必要があり:user_has_messagesesますか?

  • 結合を行うにはどうすればよいですか? User.joins(:user_has_messages) を試しましたが、悲しいです:(

質問:

どうにかして名前を UserHasMessage に変更する必要がありますか?

複数形のままにしておく場合、これらのケースをどのように処理すればよいですか?

4

3 に答える 3

4

従来のテーブルで使用するのと同じ構文を使用できます。

class OtherClass < ActiveRecord::Base
  has_many :user_has_messages, :class_name => 'UserHasMessages'
end
于 2011-03-31T07:38:06.483 に答える
3

新しい移行を追加できます

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.rbuser_message.rb変更し、クラスの名前を から に変更UserHasMessagesしますUserMessage

終わり :)

于 2011-03-31T10:15:55.560 に答える
2

悪魔が聖水を避けるように、S で終わるクラス名は避けてください。UserHasMessages という名前は、非常に不適切な選択です。何かをチェックするために db テーブルを作成しません。代わりに、User モデル、Message モデル、および UserMessage モデルがあります。次に、ユーザー メッセージを確認する場合は、それを行うメソッドを作成します。関連付けは次のとおりです。

User has many messages through user_messages

current_user.messages のようなユーザー メッセージが表示されます。

デザインを私が説明したものに変更することを強くお勧めします:)

于 2011-03-31T08:31:58.037 に答える