[英]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.