我正在开发一个rails3应用程序,我对Active Model有点困惑。 这里是我的模型:ActiveModel ::命名属性定义
class MyClass
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :foo, :foo1, foo2
def initialize(attributes = {})
attributes.each { |key, value| send "#{key}=", value }
end
def self.all
get_elig
end
private
def self.get_elig
# My function
end
end
的get_elig
函数返回一个哈希像这样:{"foo1"=>"bar1", "foo2"=>"bar2", "foo"=>"bar"}
下轨控制台:
irb(main):031:0> t = MyClass.all
=> {"foo1"=>"bar1", "foo2"=>"bar2", "foo"=>"bar"}
irb(main):032:0> t.foo
NoMethodError: undefined method `foo' for #<Hash:0x105e96be0>
我的问题很简单:用了什么事错我的模特?
感谢您的帮助。
不是.MyClass.all调用SOAP API并返回对象的散列。我想做的是将hash ['key']转换为hash.key。在用我自己的方法做这件事之后,我使用了拯救了我生命的Hashie宝石。 – jjmartres 2010-10-15 11:59:18