【发布时间】:2012-09-06 17:05:46
【问题描述】:
我有一个保单类,在该类中我有 2 个方法来确定客户是否可以续订保单。
它们看起来像这样:(在 policy.rb 模型中)
def is_renewable?
if has_not_been_renewed?
self.ends_on >= Date.today && self.ends_on <= Date.today + 60.days
end
end
def has_not_been_renewed?
been_renewed = self.renewed_policy.nil? || !self.renewed_policy.active? || !self.active?
end
所以由于某种原因,这在我的本地机器上工作,但在我们的暂存环境中却没有。 (我知道,每个程序员的祸根“但它可以在我的机器上运行!”)。
逻辑似乎很简单:首先检查以确保它尚未更新,或者他们有不同的活动策略。然后检查以确保它尚未过期,并且它将在未来 60 天内的某个时间过期。
这是从视图中的这一行调用的:
<%= link_to('Renew', {:action => 'renew', :id => policy.id}, {:class => 'btn btn-success'}) if policy.is_renewable? %>
我真的不明白为什么这在任何地方都行不通。我不会问,但我整天都在看这个愚蠢的问题,需要一双新的眼睛来审视它。谢谢
如果这有帮助,两个数据库(本地和暂存)的格式为:
yyyy-mm-dd 所以今天的日期是 2012-09-06。
【问题讨论】:
-
“在我的本地机器上工作但不在我们的暂存环境中工作”是什么意思?就像逻辑返回不正确,或者引发异常?
-
它返回不正确,因此在我的本地机器上测试用例效果很好。任何已过期的保单都没有续订按钮,而任何将在未来 60 天内到期的保单都有。任何将在 60 天后过期的东西也没有更新按钮。已过期的暂存策略没有续订按钮(按预期工作),但将在未来 60 天内到期的策略也没有续订按钮(未按预期工作,它们应该有一个续订按钮)跨度>
-
如果
been_renewed是方法has_not_been_renewed?中的最后一条语句,则无需设置变量has_not_been_renewed? -
也许这个问题会有所帮助?服务器是否在不同的 Ruby 版本上? stackoverflow.com/questions/2154281/…
-
@Adnan 两个系统都使用 ruby 1.9.3
标签: ruby ruby-on-rails-3