0

モデルに ff コードがあります。

before_save :before_save_method

attr_accessor :corrective_change
attr_accessible :corrective_change
attr_accessible :corrective_desc

  private 
    def before_save_method
      if corrective_change == 0
        self.corrective_desc = corrective_desc_was
      end
    end

ただし、 の値が何であれ、 の値はcorrective_changeユーザーself.corrective_descからの入力値によって更新されます。

すべての変数の値がテストされ、ロガーで正常に表示できますが、条件が機能しません。

誰が問題が何であるかを指摘できますか?

どうもありがとうございました。

4

1 に答える 1

0

1) corrective_change が文字列ではなく整数であることは確かですか? (int と string の比較 = 失敗)

2) これは新記録ですか? その場合、 corrective_desc_was は存在しない可能性があります (2.3 では存在しません。3.x についてはわかりません)。

3)これを試すことを検討してください:

def before_save_method
  if self.corrective_desc_changed? && self.corrective_change == 0
    self.corrective_desc = self.corrective_desc_was
  else
    logger.info "corrective_desc not changed or corrective_change != 0"
  end
end

4) また、修正変更の場合は、作成時にも呼び出されるため、before_save よりも before_update の方が適している可能性があります。

于 2012-05-03T09:22:12.160 に答える