Rails ActiveRecord通过has_many找到

时间:2013-10-17 22:27:05

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord join

iOS开发人员在这里学习Rails。尝试根据has_many关系的属性查询记录的活动记录。抱歉,如果这很简单,但我无法弄明白。我已经阅读过并且一直在尝试使用scope.where.joins,但是有很多相互矛盾的帖子和博客在线我不确定要使用哪些内容以及哪些内容正确无误。 ..

问题:

我有两个ActiveRecord模型:

class User < ActiveRecord::Base
  has_many :items
end

class Item < ActiveRecord::Base
  belongs_to :user
end

一个项目有一个属性title,我试图找到所有User的项目title与字符串格式的某个搜索参数类似。

我设法使用搜索项目,然后像.map这样设置:

users_owning_item_in_search_parameter = Item.where{ (title =~ my{@search_param + "%"}) }.map! { |i| i.user }

(该语法来自squeel gem。)

但是当我需要Array时,该命令会返回ActiveRecord::Relation,因为我需要进行一些需要此实例类型的进一步过滤。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:5)

我认为你正在寻找这样的东西:

User.joins(:items).where('items.title LIKE ?', "#{@search_param}%")

如果你想利用吱吱声,你必须稍微修改一下。