1
有人可以解釋這裏發生了什麼嗎?這是一個很簡單的例子,它試圖在我的rails 3.0.11,mongomapper 0.9.0應用程序中設置一個哈希鍵。將哈希鍵的值設置爲函數的返回值,rails 3&mongomapper
class Foo
key :a, Hash
key :b, Hash
end
> foo = Foo.new(:a=>{:timezone=>"Adelaide"}, :b=>{:timezone=>"Azores"})
> foo.a[:time] = Time.use_zone(foo.a[:timezone]){Time.zone.now}
=> Fri, 11 May 2012 20:20:36 AZOST +00:00
> foo.a[:time]
=> nil
當使用相同散列的時區時,它實際上沒有將散列鍵設置爲返回值。但是:
> foo.a[:time] = Time.use_zone(foo.b[:timezone]){Time.zone.now}
=> Sat, 12 May 2012 05:51:07 CST +09:30
> foo.a[:time]
=> Sat, 12 May 2012 05:51:07 CST +09:30
使用b散列時區並存儲該值。什麼?我可以將use_zone塊的返回值存儲在局部變量中,然後設置哈希鍵,或者爲時區等使用靜態字符串,但是當塊使用哈希本身的時區值時,我無法設置鍵值?
哼。在Time.use_zone塊中設置密鑰確實有效。你能解釋一下這個區別嗎?爲什麼這項任務在一種情況下工作,而不是另一種? – Bee