Виртуальные атрибуты в модели рельсов - PullRequest
4 голосов
/ 05 июля 2010

В моем контроллере я вызываю @ hour.shopper.add_product внутри цикла for.

Моя модель выглядит следующим образом:

class Shopper < ActiveRecord::Base

  attr_accessor :quantity

  def add_product
     if self.quantity.nil? || \
        self.quantity == 0
      self.quantity = 1 
    else 
      self.quantity += 1
    end 
    self.save
  end 

end

Когда я печатаю @ hour.shopper.quantityэто всегда говорит «ноль».Похоже, что он не сохраняет количественный атрибут в объекте @ hour.shopper.

Заранее спасибо!

1 Ответ

7 голосов
/ 05 июля 2010

Ну да, переменные экземпляра не сохраняются в базе данных (как они могут быть? Там нет столбца для них).

Поскольку заголовок вопроса "Виртуальные атрибуты", яПредположим, что у вас нет столбца количества в таблице базы данных (если это так, просто удалите бит attr_accessor), однако вам все равно нужно где-то хранить количество, если вы хотите, чтобы оно сохранялось.1005 * Обычно виртуальные атрибуты используются, когда некоторый атрибут не хранится непосредственно в БД, но может быть преобразован из и в атрибут, который является.В этом случае это не так, поэтому я могу только рекомендовать добавить столбец количества в таблицу базы данных.

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