gpt4 book ai didi

ruby-on-rails - 在 ruby​​ 中过滤事件记录结果

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:52 25 4
gpt4 key购买 nike

我是 Ruby on Rails 的新手。我在现有的 API 上工作,我有一个执行的 sql 查询:

results = ActiveRecord::Base.connection.select_all(query)

结果的输出是:

{"availability"=>"In Stock", "available_to_purchase"=>1}
{"availability"=>"Void", "available_to_purchase"=>0}
{"availability"=>"Out of Stock", "available_to_purchase"=>0}
{"availability"=>"In Stores Only", "available_to_purchase"=>0}

我知道想要获取基于 available_to_purchase 为 0 的可用性的所有值。我已经尝试过:

res = results.where(available_to_purchase: 0)

但我收到一条错误消息:

undefined method `where'

我也试过:

res = results.select { |result| result.available_to_purchase == 0 }

但我最终遇到了错误:

undefined method `available_to_purchase'

我知道我可以遍历并检查 available_to_purchase 是否为 0,然后添加到新数组。但是有什么方法可以根据列的值快速过滤事件记录结果吗?

最佳答案

直接通过连接 几乎可以避免ActiveRecord 旨在为您提供的一切。首先,阅读 Active Record Basics . Rails 指南组合得非常好,应该包含您在最初几周使用该框架所需的一切内容。

您没有获得预期的 where 方法的原因是它是 ActiveRecord::Relation 上的一个方法,而 select_all 只是返回一个哈希列表。当您调用 results.where 时,为时已晚。您需要实例化一个 Product 模型(或任何与您的表名匹配的模型),这很简单:

class Product < ActiveRecord::Base
end

Rails 会查看 products 表(同样,我正在编造你的表名)以获得 Product 具有的属性,然后你就可以使用 where 根据它们进行查询:

results = Product.where(available_to_purchase: 0)

该模型还将具有您正在尝试的访问器方法,因此您可以执行诸如 results[0].available_to_purchase == 0results[0].availability = '已经在你家了”

关于ruby-on-rails - 在 ruby​​ 中过滤事件记录结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32612903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com