在模型中,我有以下范围:
scope :rent_conditions, ->(all_rent_conditions, arguments) { where(all_rent_conditions, arguments) }
我称之为范围:
Rent.rent_conditions(all_rent_conditions, arguments).order(fermetraverd: :asc)
在控制器变量中:
@rent_filter_results
从租金搜索中获得10个活动记录关系。
现在我想从搜索中删除第一个和最后一个记录,所以我:
Rent.rent_conditions(all_rent_conditions, arguments).order(fermetraverd: :asc).values_at(1..8)
记录2 - 9正确返回到控制器。
但是,在我删除第一个和最后一个记录之前,以下语句中的pluck会抛出错误:
size = @rent_filter_results.pluck(:flatarmal)
错误是:
undefined method `pluck' for #<Array:0x007faa293e3ac0>
似乎pluck正试图访问我试图删除的第一条记录。或许我也不能完全理解发生了什么。有人可以解释并建议我如何删除第一个和最后一个活动记录关系并使Pluck仍然有效。
答案 0 :(得分:0)
实际上values_at
会将您的对象从ActiveRelation
转换为Array
。您可以尝试以下代码。
Rent.rent_conditions(all_rent_conditions, arguments).order(fermetraverd: :asc).offset(1).limit(8)
然后可以在结果上调用pluck
。即:
size = @rent_filter_results.pluck(:flatarmal)