【发布时间】:2012-03-05 18:01:11
【问题描述】:
我正在处理大量计算以将模型中的各种值变为简单的 TRUE 或 FALSE。问题是,这些计算非常激烈,我不想为此创建一个长而难以遵循的 SQL 语句。我宁愿将整个计算放在模型在返回记录时可以检查的方法中。
我已经尝试了多种方法来实现这一点,并且在查找其他类似的壮举时,其他人将像我这样的新手推向 SQL,这可能服务于大多数目的,但不会为我服务,因为正在进行的计算在某种程度上是模型外部的。
型号:
class Quality < ActiveRecord::Base
...
def passed_inspection
[code that calculates based on values in model]
end
控制器:
@records = Quality.where('passed_inspection = true')
查看:
Did pass inspection?: <%= record.passed_inspection %>
【问题讨论】:
-
你能发布一个你正在尝试的计算的例子吗?
-
您需要帮助解决什么问题?如果您不想使用长 SQL 语句,请使用代码模型的方法。如果您不想将计算代码放在模型的类中,请创建控制器辅助方法,该方法将模型作为输入并返回 TRUE 或 FALSE。
-
@MatteoMelani 我已经将计算表示为视图助手,但我还需要根据通过/失败提取记录。例如,我有一个视图,它只将失败的记录输出到表中。
-
@ScottJShea,我不能真正发布太多内容,因为它包含我客户的一些特权公式等。计算本身并不是压倒性的或困难的。它们是一系列转录到 Ruby 中的 Excel 评估。我只是看不出如何将它们变成易于阅读的 SQL 语句。我宁愿为自己简化,但为以后可能参与的其他人简化。
-
@Nicodemus 我跟着你...看起来 coderates 无论如何都有帮助
标签: ruby-on-rails-3 activerecord