2010-11-09 45 views
0

我想在我这里的模型来查询一栏:为什么我无法查询我的DataMapper模型?

require 'rubygems' 
require 'dm-core' 
require 'dm-migrations' 
require 'dm-aggregates' 

db_name = 'mydb.sqlite' 

DataMapper::Logger.new($stdout, :debug) 
DataMapper.setup(:default, 'sqlite://' + Dir.pwd + '/' + db_name) 

class Context 
    include DataMapper::Resource 
    property :id,   Serial 
    property :order,  Integer 

    def initialize 
    self.order = (self.class.max(:order) || 0) + 1 
    end 

    def move_up 
    temp = self.class.first(:order => (self.order - 1)) 
    temp.order += 1 
    temp.save 
    self.order -= 1 
    self.save 
    end 

end 

DataMapper.finalize 
DataMapper.auto_upgrade! 

但是,当我创建了几个例子,我发现了以下错误,当我调用move_up方法。

Failure/Error: context2.move_up 
+options[:order]+ entry 1 of an unsupported object Fixnum 
# ./context.rb:11:in `move_up' 

尽管有边缘条件,为什么不工作?

回答

3

:订单是一个保留字,因为它是您传递给查询的选项之一。只是将它重命名为不同的东西,它会起作用

+0

呃,额头sma。再次感谢solnic。 – lobati 2010-11-09 18:54:47

+0

heh :)顺便说一句 - 我只是做了一个修改,如果你尝试使用其中一个查询选项作为属性名称,比如:order,:fields等,Property会对你发出尖叫。 你可以检查提交看看哪些名字是保留的: https://github.com/datamapper/dm-core/commit/ea8d92b48af431a3197a8d589730e0f638709cad – solnic 2010-11-09 21:30:09

+0

太棒了,谢谢!我会期待宝石更新。享受使用dm。 – lobati 2010-11-10 03:14:50

相关问题