[前][次][番号順一覧][スレッド一覧]

rails:3518

From: OZAWA Sakuro <sakuro@2...>
Date: Tue, 7 Dec 2010 13:44:07 +0900
Subject: [rails:3518] Re: Rails3 の ActiveResource で「 undefined method `collect!' for #<Hash:」エラーが消せない

さくです。

対象となる外部のリソースはRailsでサーブしているものなのでしょうか。

2010/12/7  <roppongitoppogi@y...>:

> Rails3のActiveResourceで、外部のWeb API を呼び出す処理が
> したいのですが、1点問題が発生しました。
>
> .findメソッドでリクエストを投げて、戻ってくる値が複数あ
> る場合はArrayなので問題ないのですが、1件しかない場合 Hash
> になるため、件名のようなエラーが発生します。

サーバ側 Rails 3.0.3
クライアント側 ActiveResource 3.0.3
Ruby 1.9.0p0
で試した限りでは、1つしかなくても配列で返って来てます。

クライアント側
$ mkdir client
$ cd client
$ cat <<EOF>Gemfile
heredoc> source :rubygems
heredoc> gem 'activeresource'
heredoc> EOF
$ bundle install --quiet --path=vendor/bundle
$ bundle console
irb> require 'active_resource'
irb> class Book < ActiveResource::Base; self.site = 'http://localhost:3000'; end
irb> Book.find(:all)
=> [#<Book:0x00000000d10fd8 @attributes={"created_at"=>2010-12-07
04:31:31 UTC, "id"=>1,
    "title"=>"Learning Ruby", "updated_at"=>2010-12-07 04:31:31 UTC},
@prefix_options={}>]
irb> Book.find(:all, :conditions => 'title = "Learning Ruby"')
=> [#<Book:0x00000001d0d440 @attributes={"created_at"=>2010-12-07
04:31:31 UTC, "id"=>1,
    "title"=>"Learning Ruby", "updated_at"=>2010-12-07 04:31:31 UTC},
@prefix_options={}>]

サーバ側
$ mkdir server
$ cd server
$ cat <<EOF>Gemfile
heredoc> source :rubygems
heredoc> gem 'rails'
heredoc> gem 'sqlite3-ruby'
heredoc> EOF
$ bundle install --quiet --path=vendor/bundle
$ bundle exec rails new . --quiet --skip-gemfile -T -J
$ bundle exec rails generate scaffold Book title:string --quiet
$ rake db:migrate
$ bundle exec rails runner 'Book.create(title: "Learning Ruby")'
$ bundle exec rails runner 'p Book.all'
[#<Book id: 1, title: "Learning Ruby", created_at: "2010-12-07
04:31:31", updated_at: "2010-12-07 04:31:31">]
$ bundle exec rails server

-- 
OZAWA Sakuro

"I think we can agree, the past is over." - George W. Bush

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      3517 2010-12-07 04:35 [roppongitoppogi@y...] Rails3 の ActiveResource で「 undefined method `collect!' for #<Hash:」エラーが消せない 
->    3518 2010-12-07 05:44 ┗[sakuro@2...         ]                                       
      3519 2010-12-07 06:00  ┗[roppongitoppogi@y...]                                     
      3521 2010-12-07 06:50   ┗[sakuro@2...         ]