今日は素敵なコールバックを使用しようとしました:Rails 5のコントローラでafter_commitの代わりに使用するものは何ですか?
ActionController::RoutingError (undefined method `after_commit' for ImagesController:Class
Did you mean? after_action):
まあ、恥ずかしいた:オブジェクトがデータベースに書き込まれたときにトリガされafter_commitは、しかし、私はRailsのからのエラーメッセージを持っています!そして、このコールバックは廃止されたようです! 検索を見て、私は使用しようとしました:after_create_commit、私に同じエラーを与えた。 after_actionを:
第3のステップは試してみました。ここで質問になる: それは同じように動作するようにする方法:after_commit?
私は既にapidock.comを試しました。これは本当に最小です!また、私はapi.rubyonrails.orgを試しました - それはブロックについて言いますが、私はそれを理解するルビー忍者ではありません。だから、もしあなたがそれに光をあてることができたら、本当に感謝しています!
ImagesController:
class ImagesController < ApplicationController
after_create_commit :take_image_to_album
def take_image_to_album
if check_album
add_inner_to_album(@image)
end
end
def create
@image = Image.create(image_params.merge(:user_id => current_user.id)
respond_to do |format|
unless @image.save
format.html { render :show, notice: "Error!" }
format.json { render json: @image.errors, status: :unprocessable_entity }
else
format.html
format.json { render :show, status: :ok, location: @image }
end
end
end
...
def add_inner_to_album(image)
contents = @album.content
contents << [image.id, image[:imageup], false]
@album.update(:content => contents)
end
end
ImagesControllerには何がありますか? –
'after_commit'はモデルにのみ適用されます。コントローラについては、 'after_action'を意味します。コントローラとモデルは共通の設計言語を共有しますが、必ずしもメソッド名である必要はありません。 – tadman
@tadmanこのコールバックとそれに属するメソッドをモデルに移動するとしますか? –