首页 文章

活动记录,查询数组内部的值

提问于
浏览
3

问题:是否可以构建一个类方法范围,该范围可以根据表中数组内的值查询对象?如果是,我该怎么做?

在我的例子中,我有一个“井”表,其中有一个名为“well_tags”的数组字段 . 我想构建一个查询,返回wells_tags数组中具有指定值(例如“ceramic”)的所有对象 . 基本查询将是这样的:

@well = Well.all
@query = @well.where(“well_tags contains ceramic”)

然后类方法范围看起来像这样,从控制器传入“well_tag_search”参数:

class Well < ActiveRecord::Base

def self.well_tag_filter(well_tag_search)
  if well_tag_search.present?
    where(“well_tags contains ceramic")
  else
    Well.all
  end
end

我发现另一个帖子提出了一个类似的问题(见下面的链接),但我无法得到适合我的答案......当我知道应该至少有一个对象时,结果总是'无' . 我是初学者,使用sqlite(现在)作为我的数据库和rails 4.0 .

Active Record Query where value in array field

谢谢!

更新:一些进展

我想出了如何使用'select'方法创建我想要的所有对象的数组 . 但我仍然需要将结果作为Active Record对象返回,因此我创建了一个类方法范围 .

@well = Well.select
        { |well| if well.well_tags.present?
        then well.well_tags.include? ‘ceramic' end }

@well.class #=> array

1 回答

  • 0

    不知道 Show 来自哪里 .

    你能尝试做 Well.all 而不是 Show.all 吗?

相关问题