Rails устанавливает данные внутри метода - PullRequest
0 голосов
/ 28 февраля 2012

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

Вот мой класс

class Option < ActiveRecord::Base
  serialize :returns_policy_refunds, Array
  def reloadRefundOptions!
    @returns_policy_refunds = WebSite.get_refund_options #options array
  end
end

Простой как 'класс, а?

Чтобы проверить сериализацию, я просто выплевываю данные на экран ..

-@options.each do |option|
  - option.returns_policy_refunds = ["wtf"] #just to reset things

  <b>BLOCK 1</b>
  = option.reloadRefundOptions!
  = option.returns_policy_refunds
  <br>
  <b>BLOCK 2</b>
  = option.returns_policy_refunds = WebSite.get_refund_options
  = option.returns_policy_refunds

Теперь .. Я ожидаю увидеть то же самое в BLOCK1 и в BLOCK2 .. Метод устанавливает политику возврата. То, что я на самом деле вижу в первом option.returns_policy_refunds, это ["wtf"]

Чего мне не хватает?Должно быть, я что-то делаю не так, но понятия не имею, что.Есть мысли?

1 Ответ

2 голосов
/ 28 февраля 2012

Не указывайте @ в назначении атрибута:

class Option < ActiveRecord::Base
  serialize :returns_policy_refunds, Array
  def reloadRefundOptions!
    self.returns_policy_refunds = WebSite.get_refund_options #options array
  end
end

Еще не пробовал, но я бы сказал, что option.returns_policy_refunds получает данные из хеша атрибутов, определенного ActiveRecord. Если вы присваиваете переменную класса, используя @, она там только что определена, и доступ к ней возможен только с помощью считывателя атрибутов или прямой отправки.

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