来自服务对象的错误返回值

时间:2013-07-18 18:27:03

标签: ruby-on-rails return-value

我有一个使用Connection类的控制器(我使代码更简单,以说明问题):

class InvoicesController < ApplicationController
  def connect
    @flow = Flow.new(year: 2010, month: 10, day: 5)  
    @con = Connection.new(@flow)    
    @con.connect
    flash.now[:error] = "#{@con.connect}" 
  end  
end


class Connection
  def initialize(obj)    
    @obj = obj    
  end

  def connect    
    @result = [1].each do |x|        
      case         
        when (@obj.year > 1) && (@obj.day != 5)
          break "result from case1: #{@obj.day}"
        when (@obj.year > 1) && (@obj.day == 5)
          @obj.update_attributes(day: 6)
          break "result from case2 #{@obj.day}"              
      end  
    end    
    return "#{@result}"
  end
end

@flow对象与案例2(日期:5)匹配,但闪存显示:

result from case1: 6

当我在控制台中测试Connection类时,返回值是正确的。

也许我会错过一些基本概念,谢谢。

1 个答案:

答案 0 :(得分:0)

您第一次拨打connectupdate_attributes(day: 6))时正在修改对象,因此您第二次调用它时会得到另一个案例。如果您只想调用一次,请将返回值保存在新变量中并将其发送到闪存。