ruby-on-rails - 查询数组内部值的事件记录

标签 ruby-on-rails arrays sqlite activerecord

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

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

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

然后类方法范围看起来像这样,带有从 Controller 传入的“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

最佳答案

不确定 Show 的来源。

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

关于ruby-on-rails - 查询数组内部值的事件记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21104024/

相关文章:

ruby-on-rails - 尝试启动 Rails 服务器时出错

c - 同时对两个数组进行并行数组快速排序

iphone - 我如何通过 iphone 项目中的 obj c 方法更改 sqlite 数据库中的表

c# - 来自 SQLiteConnection 对象的 SQLite .dump 命令

ruby-on-rails - 基于 Ruby 的博客引擎

ruby-on-rails - 如何在 Controller 中从 ERB 对象渲染 html?

c - 使用 qsort 同时对两个数组进行排序?

ios - NSArray 中对象的说明

android - 棉花糖与 SQLite 绑定(bind)数据花费太多时间

ruby-on-rails - 升级到 Ruby on Rails 3.1 : How to solve image loading issues in CSS files?