【发布时间】:2013-12-31 06:04:23
【问题描述】:
免责声明:第一个问题,rails新手,请在回复中详细说明。
我正在尝试使用基于在我的数据表中的两列上执行的简单方程式的类方法创建过滤器。我不知道如何让查询/过滤器运行,以便它根据我的方程式结果过滤结果。这是我的表格的缩写:
t.integer “horizontal_length”
t.integer “thirty_day_flow_rate”
我想要一个基于以下等式的过滤器:(三十天流量率/水平长度),所以用户可以说,“给我展示所有 30 天流量大于每英尺长度‘x’桶的井”
我在我的模型中创建了一个方法来保存方程,当我在 Well 对象上调用它时它工作正常:
class Well < ActiveRecord::Base
def flow_rate_per_foot
thirty_day_flow_rate / horizontal_length
end
但是,当我想根据方程式的结果创建过滤器时,我不知道如何进行。我尝试了类似的方法,使用从控制器传入的 mimimum_flow_rate 参数:
class Well < ActiveRecord::Base
def self.flow_rate_filter(minimum_flow_rate)
if mimimum_flow_rate.present?
where(‘flow_rate_per_foot >= ?', minimum_flow_rate)
else
Well.all
end
end
显然这不起作用,因为 flow_rate_per_foot 不是我的数据表中要调用的列。我该如何解决这个问题?有没有其他方法可以解决这个问题?我想对许多不同的方程和列进行这种类型的过滤,因此任何解决方案都需要灵活。谢谢!
作为参考,我的控制器如下所示,而我设置的其他直接从我的数据表运行的过滤器可以正常工作:
def index
@wells = Well.flow_rate_filter(params[:mimimum_flow_rate])
end
谢谢!
【问题讨论】:
标签: ruby-on-rails activerecord rails-activerecord