【发布时间】:2011-03-10 02:05:30
【问题描述】:
我正在尝试这样做,以便我可以配置一些列以始终根据用户设置转换为不同的时区。我希望配置如下:
class MyClass
include TimeZonify
tz_column :col1, :col2
end
我的 mixin 显然不正确,但它看起来像这样:
module TimeZonify
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def tz_column(*columns)
columns.each do |column|
instance_eval do # <-- obviously this block does not get executed
<<-CODE
def #{column}
super.in_time_zone("Lima")
end
CODE
end
end
end
end
end
所以现在,当我调用 MyClass.new.col1 时,它将不再是 UTC,而是用户个人资料中的任何时区。
【问题讨论】:
标签: ruby-on-rails ruby activerecord metaprogramming