最初にまず:私はRuby 1.9.3とDataMapper 1.2.0を使用しています。私は、次の一見単純なモデル作成DataMapper:オブジェクトインスタンスとDateTimeをインスタンス化できません。
:
class User
include DataMapper::Resource
property :id, Serial
property :username, String
property :password, BCryptHash
property :name, String
property :email, String
property :created_at, DateTime
end
私はIRBシェルでこれを起動することができますが、それはデータベースを作成し、誰もが幸せなのです。しかし、私は試してみます:
tim = User.new(:username => "tim", :password => "password", :name => "Tim", :email => "[email protected]", :created_at => Time.now)
私はコンソールに、すべての属性をそのまま残して、ユーザーインスタンスを受け取ります。私はtim.save!
を実行し、成功を見ることができます。ただし、この時点でユーザーを一覧表示しようとすると、エラーが発生します。
irb(main):001:0> User.all
(Object doesn't support #inspect)
=>
irb(main):002:0> User.first
NoMethodError: undefined method `new!' for DateTime:Class
from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:153:in `next!'
from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:153:in `block in read'
from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:276:in `with_connection'
from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:141:in `read'
from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/repository.rb:162:in `read'
from /usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/model.rb:377:in `first'
from (irb):5
from /usr/local/Cellar/ruby/1.9.3-p0/bin/irb:12:in `<main>''
手がかりはありますか?他には#inspect
をサポートしていないためにSOやGoogleが実際に登場しているわけではなく、Ruby stdlibのドキュメントには明らかにDateTimeのnew!
メソッドがありません。
あなたは 'DateTime'としてその列の型を指定しましたが、' DateTime.now'ではなく 'Time.now'を使って自分自身を作成しています。あなたがそれを変えたら、それは助けになるのですか? – Phrogz
いいキャッチだけど、私は両方(DM文書のどこかで彼らが作成時に互換性があると読んだ後に)試しました。同じ結果。 – Tim
OK;すみません、私はもっと助けることができません。私はDMではなく、[Sequel](http://sequel.rubyforge.org)を使っています。 – Phrogz