私のモデルのcropping
メソッドは、コントローラーでユーザーの属性を更新した後に終了しないループで呼び出されます。
User controller code
-
def change_img
@user = current_user
#this triggers the model's after_update callback
@user.update_attributes(params[:user])
flash[:notice] = "Successfully updated Image."
render :action => 'crop'
end
User Model code
-
after_update :reprocess_avatar, :if => :cropping?
def cropping?
#this method is called infinitely why?
!crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
end
crop_x、crop_y、crop_w、crop_h が設定されると、cropping
メソッドは常に true を返し、reprocess_avatar
メソッドを呼び出し続けます。これはおそらく、メソッドがユーザー テーブルの属性reprocess_avatar
も更新していることが原因です。avatar
そして、再びafter_update
トリガーがループを引き起こします。
更新後に一度だけメソッドを呼び出す方法はありますか?