Rails 3, Методы модели / Расчетные атрибуты - PullRequest
1 голос
/ 05 марта 2012

Я имею дело с многочисленными вычислениями, чтобы привести различные значения в модели к простому ИСТИНА или ЛОЖЬ.Проблема в том, что эти вычисления довольно интенсивные, и я не хочу создавать для них длинный, сложный оператор 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 %>

1 Ответ

7 голосов
/ 05 марта 2012

Похоже, что решение вашей проблемы состояло бы в использовании Scope с Class Method , чтобы помочь очистить вашу модель.По сути, вы бы настроили свою модель так:

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

Тогда вы можете получить эти данные, назвав их так:дополнительная информация: RailsCast # 215 Расширенные запросы

Редактировать: Исправлена ​​какая-то ужасная грамматика

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...