Ruby DataMapper从模型中保存

时间:2011-09-04 08:34:30

标签: ruby datamapper

我尝试从模型对象中保存一些数据,但没有任何反应:( 我不对的是什么?

class Gallery
  include DataMapper::Resource

  property :id, Serial
  property :title, String
  property :user, String
  property :album, String
  property :place, String
  property :fotki, Text
  property :date, Date
  property :created_at, DateTime

  default_scope(:default).update(:order => [:created_at.desc])

  def get_images
    if @fotki.nil? then
      fotki = Fotki.get(@user, @album)
      self.update(:fotki => fotki.to_json)
      puts 'Request'
      fotki
    else
      puts 'Use Cache'
      JSON.parse(@fotki)
    end
  end
end

1 个答案:

答案 0 :(得分:3)

datamapper中存在一个可能导致以下情况的错误:

resource = SomeModel.new(attributes_from_somewhere)
resource.valid? # => true
resource.save   # => false, and no db interaction
resource.saved? # => false

无法保存的有效资源。沉默的失败。

使用raise_on_save_failre设置可以解决此静默故障问题。但是异常消息仍然毫无意义。只讨论#save返回false;)。

如果持久保存对特定属性无效的值,则会出现问题。例如date属性中的布尔值或非强制字符串。

使用fix datamapper会在要保留属性的无效值时引发有意义的异常。遗憾的是,目前还没有包含修复的版本。您必须从https://github.com/datamapper/dm-core尝试主分支!

免责声明:我是修复的作者。