Где логика вычисления должна войти в приложение для направляющих?

Это сводится к тому, имеет ли ЦП в Вашей машине, VT укусил (Виртуализация), и BIOS позволяет Вам включить его. Например, мой ноутбук Core 2 Duo , который способен к использованию этого. Однако мой BIOS не позволяет мне включить его.

Примечание, что я считал, что включение этой функции может замедлить нормальное функционирование на 10-12%, который является, почему это обычно выключается.

6
задан tereško 23 August 2014 в 13:21
поделиться

4 ответа

Есть несколько способов подойти к этому, но логика определенно не принадлежит точке зрения. У вас есть различные модели, связанные друг с другом в четкой иерархии, причем вершиной иерархии является модель Дома, если я правильно читаю ваше описание. В таком случае Я бы добавил соответствующий метод набора методов к модели Дома, который может состоять из вызовов методов расчета в моделях Помещений, связанных с данным экземпляром Дома, и по линии связи. Таким образом, соответствующие вычисления могут быть выполнены на каждом уровне, и, составив один или несколько методов на уровне модели Дома, вы получите чистый, выразительный и удобный в обслуживании способ работы с вычислениями.

Также нужно сделать еще одно. , было бы убедиться, что любые вычисления, которые могут быть выполнены БД. Например, если есть расчет, который модель Room может выполнять, просто запрашивая собственные данные, тогда непременно перенесите эту вычислительную нагрузку в базу данных, используя способность ActiveRecord вызывать такую ​​логику расчета более низкого уровня. Дополнительные сведения см. В документации API .

Я бы очень внимательно посмотрел на нужную вам логику и посмотрел, как ее можно вставить в модель, поскольку она, вероятно, принадлежит именно этому месту, близко к фактическим данным расчетов, и внутри структур классов, которые представляют эти данные конкретно ; Я бы не стал создавать модель только для обработки логики вычислений, если вам действительно не нужно постоянно хранить вычисления по какой-то причине.

5
ответ дан 17 December 2019 в 00:11
поделиться

Я бы создал класс в RAILS_ROOT / lib / под названием, например, Calculator, и поместил бы туда код.

Классы в / lib / должны быть загружены в любом месте вашего приложения.

Вы также можете создать простой объект ruby ​​в / app / models /. Нет причин, по которым все они должны наследовать от ActiveRecord :: Base

1
ответ дан 17 December 2019 в 00:11
поделиться

Хорошо, теперь я вижу опубликованный код. Я вижу, что в файле Calculator_controller нет вычислений, они в представлениях? Попробуйте такой подход:

  1. Напишите тест, который устанавливает объект, который будет возвращать результаты, которые необходимо вернуть пользователю веб-страницы, учитывая дом, комнаты или что-то еще, что ему нужно.
  2. Постройте модель ( в моделях), чтобы этот тест прошел.
  3. Измените код контроллера, указанный выше, чтобы использовать новую модель калькулятора.
  4. Измените тесты вашего контроллера, чтобы они также прошли. Эти тесты, конечно, не нуждаются в проверке какой-либо бизнес-логики.

Мой предыдущий ответ:

Если бизнес-логика довольно проста и используется только за этим веб-приложением, вы можете поместить ее в свое приложение / модели папку.

class MyCoolClass
  def initialize(clues)
    @other_things = OtherThing.all
  end
  def do_cool_thing; end
  def calculate_coolness
    @other_things.length 
  end
end

Затем в вашем контроллере

1
ответ дан 17 December 2019 в 00:11
поделиться

Все зависит от того, какие данные вы создаете. Как выглядит контроллер калькулятора?

Вы можете создавать свои собственные классы в / lib и использовать их в своих моделях, что может быть хорошим способом отделить логику от контроллера / помощников. Есть ли причина, по которой вы не могли добавить логику в модели?

0
ответ дан 17 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: