我突然完全失去了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"
通过魔术方法工作。
答案 0 :(得分:1)
在处理模型的实例方法时,尝试将self
添加到属性引用中:
def hmpf
self.foo = "blah"
end
应该做的伎俩。