gpt4 book ai didi

ruby - 在事件记录范围内映射

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:23 27 4
gpt4 key购买 nike

我有一个事件记录,其中有一个用例:我想在 ActiveRecord scopes 中使用 map。以下是我的代码:

class SupportedGeoIdAndLocation < ActiveRecord::Base

scope :supported_geo_ids, lambda { all.map(&:geo_id).uniq }
# also tried: scope :supported_geo_ids, lambda { select('distinct geo_id').map(&:geo_id).uniq }
scope :locations_for_geo_id, lambda { |geo_id| where(:geo_id => geo_id).map(&:location) }
end

但是当我执行 SupportedGeoIdAndLocation.supported_geo_ids 时,我得到空数组,而 SupportedGeoIdAndLocation.all.map(&:geo_id).uniq 给出了我想要的结果。

我正在寻找一种方法,以便可以使用 lambda 一次完成,而不是通过链接不同的方法并完全避免类函数。

看起来我使用范围的方式不对,请告诉我正确的方法。

版本:padrino:0.10.5,ruby:ruby-1.9.3-p429,ActiveRecord:3.1.6

最佳答案

scope 应返回一个 ActiveRecord::Relation,因此可以将范围与另一个范围或类方法等链接起来。

如果要获取数组,请改用类方法。

def self.supported_geo_ids
all.map(&:geo_id).uniq
end

关于ruby - 在事件记录范围内映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24201123/

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