2011-12-01 108 views
0

我试图保存到sqlite 3数据库。我似乎无法保存,但没有发生错误。我究竟做错了什么?我从现有的一段代码中取出了保存程序。关于下一步我应该尝试的任何想法?使用DataMapper保存数据

require 'data_mapper' 
require 'dm-migrations' 

DataMapper.setup :default, "sqlite://#{Dir.pwd}/development.sqlite3" 

class Post 
    include DataMapper::Resource 
    property :title,  String, :key => true # An auto-increment integer key 
    property :slug_url, String 
    property :desc,  String 
    property :content, String 
    property :project, String 
    property :target_url, String 
    property :trackback, Boolean 
    property :updated_at, String 
    property :created_at, DateTime # A DateTime, for any date you might like. 
end 

DataMapper.finalize 
DataMapper.auto_upgrade! 

post = Post.new 
post.attributes = {:title => "Title", 
       :slug_url => "Some-slug-url", 
       :content => "content", 
       :target_url => "http://example.com", 
       :trackback => false 
} 
post.save 

回答

0

我不知道为什么这个工程有什么不同,但我得到了它做这个工作:

require 'data_mapper' 
require 'dm-migrations' 

DataMapper.setup :default, "sqlite://#{Dir.pwd}/development.sqlite3" 

class Post 
    include DataMapper::Resource 
    property :title,  String, :key => true # An auto-increment integer key 
    property :slug_url, String # A varchar type string, for short strings 
    property :desc,  String 
    property :content, String 
    property :project, String 
    property :target_url, String 
    property :trackback, Boolean 
    property :updated_at, DateTime 
    property :created_at, DateTime # A DateTime, for any date you might like. 
end 

DataMapper.finalize 
DataMapper.auto_upgrade! 

post = Post.new(:title => "Title", 
        :slug_url => "Some-slug-url", 
        :content => "content", 
        :target_url => "http://example.com", 
        :trackback => false) 
post.save 
+1

property:updated_at,String应该是DateTime –

+0

@AndrewKolesnikov修正! –

0

“无错误抛出”部分可以固定DataMapper::Model.raise_on_save_failure = trueDataMapper不默认保释。 #save!是不安全的版本(不知道为什么ActiveRecord使用与爆炸完全不同的语义)。 For further information, read here.

抛出的第一个错误是column title is not unique (DataObjects::IntegrityError)。猜猜发生了什么;-)