0

私は、レールのupdated_atとcreated_ateを認識しています。 しかし、興味があるのは、別のフィールドが更新されたときにモデル内のフィールドを更新する機能です。ここで私が試したものです:私のモデルでフィールドが更新される時間を取得する方法

protected 

    def update_email_sent_on_date 
    if self.send_to_changed? 
     self.date_email_delivered = DateTime.now 
    end 
    end 

と、問題のフィールドを更新し、私のコード内の1つの場所で:

distribution.send(:update_email_sent_on_date) 

問題は、このdoesnのです私のdbテーブルには何もしていないようです。私も "send_to"のチェックを削除しようとしましたが、まだ何もありません。

何が間違っていますか?

+0

ねえ、私はあなたの他の質問に対する私の元の答えはほど明確ではなかったと思いますそれはあったはずです。私は説明を改訂/改良しました。おそらくそれを再読み込みして、このメソッドを 'protected'ではなく' private'にしてみてください。それでメソッドを呼び出すために 'send'を使う必要はありません。 – Batkins

答えて

1

変更した後は保存しません。

変更し、これに方法:

def update_email_sent_on_date 
    if send_to_changed? 
    self.date_email_delivered = DateTime.now 
    save 
    end 
end 

かそこらのようにそれを呼び出した後にモデルを保存:

distribution.update_email_sent_on_date 
distribution.save 
+0

これらの方法のどちらも機能していないようです...? – Ramy

+0

この場合、 'send_to_changed?'が 'true'と評価されていますか?おそらく 'if'ブロックの中にテスト' puts'文を入れて、アプリケーションを再起動してもう一度実行し、実際にそのブロックを実行していることを確認してください。 – Batkins

+0

ええ、それは犯人でした。しかし、なぜ? _changedを使用する*正しい*方法は何ですか?方法? – Ramy

関連する問題