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