我有一张表,用于存储年龄范围。
年龄范围保存为Range对象,例如红宝石中的(1..4)
。现在,当我必须获取一个年龄落在年龄范围内的所有记录时。我必须这样做
table.select{|s| s.age_range.include?(19)}
但是这会返回一个数组,而不是一个活动的记录关系对象。所以我更喜欢做类似的事情:
table.where(s.age_range: age_range.include?(19)}
显然不正确。但它得到了重点。我想知道这是否可能。
model.rb
class Model < ActiveRecord::Base
attr_accessor :age_range_min, :age_range_max
before_create :set_age_range
serialize :age_range
def set_age_range
self.age_range = (age_range_min.to_i..age_range_max.to_i)
end
end
答案 0 :(得分:0)
好的,因为SQL不了解或不知道如何解释文本blob,所以它无法提取所需的记录。
但是,如果您不一定要寻找一个高性能的解决方案(即您只想要一个ActiveRecord :: Relation),那么您可以使用生成的数组来执行此操作...
<span class="btn-collapse collapsed" data-toggle="collapse" data-target="#customerinformation-collapse"></span>