2012-01-26 6 views
1

最初にまず:私は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!メソッドがありません。

+0

あなたは 'DateTime'としてその列の型を指定しましたが、' DateTime.now'ではなく 'Time.now'を使って自分自身を作成し​​ています。あなたがそれを変えたら、それは助けになるのですか? – Phrogz

+0

いいキャッチだけど、私は両方(DM文書のどこかで彼らが作成時に互換性があると読んだ後に)試しました。同じ結果。 – Tim

+0

OK;すみません、私はもっと助けることができません。私はDMではなく、[Sequel](http://sequel.rubyforge.org)を使っています。 – Phrogz

答えて

2

これは私がRuby 1.9.3に切り替えたので、私が使っていたdo_sqlite3の宝石のバージョンとは関係なく、再インストールされていません。 this bugで述べたように、私はすべての私のdo_*の宝石を再インストールして、それが働く前に1.9.3と再リンクする必要がありました。

関連する問題