Rails在方法中设置数据

时间:2012-02-28 01:23:23

标签: ruby-on-rails methods

我在活动记录中设置数据有一个奇怪的问题。 当我尝试在方法中设置数据时,它似乎不会影响任何东西。

这是我的班级

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

简单如'class eh?

为了测试序列化我只是在屏幕上吐出数据..

-@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中相同的内容.. 该方法设置退货政策.. 我在第一个选项中实际看到的是.returns_policy_refunds是[“wtf”]

我错过了什么?我一定做错了,但我不知道是什么。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在属性分配中忽略@

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

Haven尚未尝试过,但我会说option.returns_policy_refunds从ActiveRecord定义的属性哈希中获取数据。如果您使用@分配一个类变量,那么它只是在那里定义,并且只能通过属性读取器或直接发送来访问。