如何在类中设置Mongoid字段

时间:2011-07-01 14:21:28

标签: ruby-on-rails-3 scope mongoid

我突然完全失去了Rails with Mongoid中的变量范围。 (可能是因为缺少咖啡)。

我想要的只是一种在应用程序中设置某些字段的方法,但我能找到的唯一方法就是调用write_attribute

class Example
  include Mongoid::Document
  field :foo

  def bar
    @foo = "meh"
  end
  def hmpf
    foo = "blah"
  end
  def baz
    write_attribute(:foo, "meh")
  end
end

e.bar   #=> "meh"
e.foo   #=> nil
e.hmpf   #=> "blah"
e.foo   #=> nil
e.baz   #=> [nil, "meh"]
e.foo   #=> "meh"

我使用的范围错了吗?为什么运行foo = "bar"不会从内部设置字段,而是从外部运行:e.foo = "blah"通过魔术方法工作。

1 个答案:

答案 0 :(得分:1)

在处理模型的实例方法时,尝试将self添加到属性引用中:

def hmpf
  self.foo = "blah"
end

应该做的伎俩。