2012-02-28 5 views
0

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

Вот мой класс

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

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

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

[email protected] 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 .. Метод устанавливает return policy .. Что я на самом деле вижу в первом варианте.returns_policy_refunds is ["wtf"]

Что мне не хватает? Я должен делать что-то неправильно, но я понятия не имею, что. Любые мысли?

ответ

2

Оставьте вне @ в вашем назначении атрибута:

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. Если вы присвоите переменную класса с помощью @, она просто определена там и доступна только для чтения атрибутов или для прямой отправки.

+0

Нет радости .. Я попробовал это b4, но я попробовал это сейчас. Я все еще вижу WTF в своем выпуске. – baash05

+0

Я основывал свой код на http://tmonrails.wordpress.com/2009/08/05/ruby-setter-and-getter-methods/ – baash05

+0

нашел его .. сам. самостоятельно. это ответ. – baash05