Ruby on rails 服务对象返回的值错误

Ruby on rails 服务对象返回的值错误,ruby-on-rails,return-value,Ruby On Rails,Return Value,我有一个使用连接类的控制器(为了说明问题,我简化了代码): class InvoicesController1)和(@obj.day!=5) 中断“案例1的结果:#{@obj.day}” 当(@obj.year>1)和(@obj.day==5) @对象更新属性(第6天) 中断“来自案例2{@obj.day}的结果” 结束 结束 返回“#{@result}” 结束 结束 @flow对象与案例2(第5天)匹配,但闪光灯显示: 案例1的结果:6 在控制台中测试Connection类时,返回值是正确的

我有一个使用连接类的控制器(为了说明问题,我简化了代码):

class InvoicesController1)和(@obj.day!=5)
中断“案例1的结果:#{@obj.day}”
当(@obj.year>1)和(@obj.day==5)
@对象更新属性(第6天)
中断“来自案例2{@obj.day}的结果”
结束
结束
返回“#{@result}”
结束
结束
@flow
对象与案例2(第5天)匹配,但闪光灯显示:

案例1的结果:6

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


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

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

回答得很好,感谢您的快速重播。现在返回值是正确的!
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