簡體   English   中英

如何在Rails 3中搜索has_many關聯(meta_where或railslogic?)

[英]How can I search through a has_many association in Rails 3 (meta_where or railslogic?)

我有一個名為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

您不需要Searchlogic,MetaSearch或MetaWhere即可實現此目的:

User.joins(:user_has_messages).where(:user_has_messages => {:message_id => @message.id})

這可能應該是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

您還將需要第三張表:

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並在其上設置一些范圍。 這似乎更適合您要完成的任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM