Nic*_*ick 1 activerecord ruby-on-rails-3
我正在处理大量计算,以将模型中的各种值简化为TRUE或FALSE.问题是,这些计算非常激烈,而不是我想创建一个很长的,难以遵循的SQL语句.我宁愿在模型可以在返回记录时检查的方法中进行整个计算.
我已经尝试了很多方法来实现这一目标,当查找其他类似的功能时,其他人将像我这样的新手推送到SQL,它可能用于大多数目的但不会服务于我,因为正在进行的计算在某种程度上是模型外部的.
模型:
class Quality < ActiveRecord::Base
...
def passed_inspection
[code that calculates based on values in model]
end
Run Code Online (Sandbox Code Playgroud)
控制器:
@records = Quality.where('passed_inspection = true')
Run Code Online (Sandbox Code Playgroud)
视图:
Did pass inspection?: <%= record.passed_inspection %>
Run Code Online (Sandbox Code Playgroud)
听起来您的问题的解决方案是使用带有类方法的Scope来帮助清理模型.基本上你会像这样设置你的模型:
class Quality < ActiveRecord::Base
def self.passed_inspection
# Code that does your calculations
end
scope :passed, passed_inspection() # This needs to be below the function above
end
Run Code Online (Sandbox Code Playgroud)
然后你可以这样调用它来获取这些数据
@records = Quality.passed
Run Code Online (Sandbox Code Playgroud)
如果您需要更多信息,可以使用rails来解决此问题:RailsCast#215 Advanced Queries
编辑:修正了一些可怕的语法
| 归档时间: |
|
| 查看次数: |
2274 次 |
| 最近记录: |