0

私はrails3アプリに取り組んでいますが、アクティブモデルと少し混乱しています。これが私のモデルです:

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>

私の質問は単純です:私のモデルで何がうまくいかなかったのですか?

手伝ってくれてありがとう。

4

2 に答える 2

0

ではない正確に。

MyClass.all は SOAP API を呼び出し、オブジェクトのハッシュを返します。

私がやりたかったのは、に変換するhash['key']ことでしたhash.key。私自身の方法でこれを行った後、私は命を救ったこの宝石を使用しました.

誰かを助けることを願っています:)

于 2010-10-15T12:02:33.740 に答える
0

あなたが言ったように: MyClass.all はハッシュオブジェクトを返し、ハッシュにドット表記を使用することはできません。

おそらく必要なのは、クラスをハッシュで初期化することです: x = MyClass.new({"foo1" => "bar1"})。実装が示唆するように、ドット表記でアクセスできるようになりました。

于 2010-10-14T07:47:40.647 に答える