1

ポリシークラスがあり、そのクラスには、顧客がポリシーを更新できるかどうかを判断する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

4

2 に答える 2

2

ステージングデータベースにデータ整合性の問題がないと仮定すると(たとえば、ends_onが設定されていない場合、ポリシーがない場合はポリシーを更新する必要があると考えます)、システムクロックをチェックして、ポリシーが設定されていることを確認することをお勧めします。正確であり、期待するタイムゾーンを使用しています。

于 2012-09-06T17:13:21.323 に答える
0

データベースのポリシーはありますか(そしてデータベースはステージング環境と開発環境で異なります)?場合によっては、Time.now.to_s(:db)など、データベースにとってよりわかりやすい形式で日付をフォーマットする必要があります。

于 2012-09-06T17:11:20.490 に答える