私はモデルArticle
name:string description:text number_of_comments:integer open_for_comments:boolean
を持っています。Rails before_updateはトリガーしません
5つ以上のコメントがある場合にコメントする可能性をブロックしたいが、機能しません。
私が記事open_for_comments
を作成するときは、常にnil
です。それは、それが誘発しないことを意味します。
誰でも手助けできますか?
は、ここでは、コードあなたがopen_for_commentsのデフォルト値がnilになるだろう新しい記事を作成している
class Article < ActiveRecord::Base
before_update :close_comments, if: :more_than_five_comments?
def more_than_five_comments?
self.number_of_comments >5 ? true : false
end
def close_comments
self.open_for_comments = false
end
end
コメントモデルがありますか?もしそうなら、それは 'Article'に関連していますか? 'Article has_many:comments'の場合は、' open_for_comments'のためのメソッドを持つ必要があり、 'number_of_comments'カウンタか' open_for_comments'のブール値は必要ありません。 – tamouse
**記事を作成するとき、open_for_commentsは常にNILです。つまり、トリガーしないことを意味します** **記事を作成すると、before_updateコールバックは既存のレコードでのみ機能するため、**起動されません**。あなたはbefore_createかbefore_saveのどちらかを見たいかもしれません。どちらにしてもあなたのニーズに合っています。 – hypern