1

UserHasMessages というモデルがあります。

belongs_to :message
belongs_to :user

User.rb モデルは次のとおりです。

has_many :messages, :through => :user_has_messages

関連する UserHasMessages の Message_id が @message.id であるユーザーを検索したい

私はこのようなことを(searchlogicを使用して)試しましたが、うまくいきませんでした.meta_whereでどこから始めるべきかわかりませんでした:

User.user_has_message.message_id_is(@message.id).is_sender(false).last
4

2 に答える 2

2

これを実現するために、searchlogic、MetaSearch、MetaWhere は必要ありません。

User.joins(:user_has_messages).where(:user_has_messages => {:message_id => @message.id})
于 2011-03-29T12:49:51.600 に答える
1

これはおそらくhas_and_belongs_to_many関係があるはずです

class User < ActiveRecord::Base

    has_and_belongs_to_many :messages

end

class Message < ActiveRecord::Base

    has_and_belongs_to_many :users

end

3 番目のテーブルも必要になります。

messages_users

そして、移行は次のようになります

class CreateMessagesUsers < ActiveRecord::Migration
  def self.up
    create_table :messages_users do |t|
      t.integer :user_id
      t.integer :message_id

      t.timestamps
    end
  end

  def self.down
    drop_table :messages_user
  end
end

それが設定されたら、あなたは呼び出すことができます

@user.messagesまたは@message.users、その上にいくつかのスコープを設定します。これは、あなたが達成しようとしていることにより適しているようです。

于 2011-03-29T00:59:34.883 に答える