为什么我不能在ruby中将哈希值加1?

时间:2012-11-10 14:49:00

标签: ruby sequel

我正在使用Sequel ORM

@latestorder = Step.where(:tutorial_id =>data['tutorial_id']).order(Sequel.desc(:order)).limit(1) #data['tutorial_id'] is 1
@neworder = @latestorder[:order] +1; #<-- this line causes errors!

NoMethodError at /makenew/stepundefined method `+' for #<Step:0x2f85138>

使用.to_i不起作用,我无法使用DB[]进行此查询。

输出@latestorder和@latestorder [:order]

<?r @latestorder.inspect ?>
  

<?r @latestorder.each do |late| ?>
#{late.inspect}
<?r end ?>
  

#13,:user_id =&gt; 1,:tutorial_id =&gt; 1,:order =&gt; 9,:title =&gt;“选择一个群组”,:instruction =&gt;“从群组页面中选择其中一个组继续。\ r \ n \ r \ n如果您有flyasakite的密码进行测试,请选择All About Compesh组“,:url =&gt;”http://compesh.com/groups“ ,:datenumber =&gt;“2012-11-10”,:datetimenumber =&gt;“2012-11-10 13:18”}&gt;

<?r @latestorder.each do |late| ?>
#{late.order.inspect}
<?r end ?>
  

9

我需要能够向LIMIT为1的@latestorder添加1,而无需进入.each循环

3 个答案:

答案 0 :(得分:1)

您的@latestorder是一个数组,获取第一个元素,并尝试使用它:

@neworder = @latestorder[0][:order] +1;

答案 1 :(得分:1)

@latestorder是续集::数据集,如果您希望它是哈希,则需要将limit(1)更改为first

答案 2 :(得分:0)

或者因为Sequel具有不同的数组/哈希id,具体取决于行的id。

@neworder = @latestorder.first.order +1