Рельсы - 1 запись в модели на поле в день - PullRequest
0 голосов
/ 20 марта 2010

Допустим, у меня есть модель еды

в модели каждый день люди вводят, сколько фунтов пиццы / овощей / фруктов они едят.

каждый продукт имеет свою колонку

Моя проблема в том, что я хотел бы, чтобы они могли вводить это только один раз (для данного типа пищи) каждые 24 часа (на основе созданного_ат).

Это возможно?

Ответы [ 2 ]

0 голосов
/ 16 мая 2011

Есть два способа сделать эту работу:

  1. Каждое поле имеет свое собственное поле updated_at - последнее обновляется при изменении его тезки, и вы делаете простую проверку, чтобы проверить следующее:

    before_save :check_periodicity
    
    def check_periodicity
      if self.pizza_updated_at > Date.today - 1.day
        errors.add(:pizza, "You cannot update your pizza values more often than once a day".)
      end
      ... similarly for any other fields (you could also find a way to loop this)
    end
    
  2. Храните каждый тип пищи в отдельной модели под названием FoodItem, в которой будут столбцы для типа пищи, дня и т. Д. Таким образом, вы можете иметь в своей системе много типов продуктов и не иметь дело с не легкая масса, состоящая из множества x_updated_at полей.

0 голосов
/ 20 марта 2010

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

Я бы начал с создания именованной области, которая находит записи в определенный день.

Тогда в ваших валидаторах вы можете использовать существующее? метод, чтобы найти, есть ли какие-либо записи, которые уже существуют, которые будут конфликтовать. Имейте в виду, что существует? Метод будет определять текущую запись по умолчанию, поэтому вам придется учитывать это.

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