今天我試圖用一個精彩的回調:after_commit當對象被寫入數據庫觸發,但是,我從Rails的得到的錯誤消息:在Rails 5的控制器中使用什麼而不是after_commit?
ActionController::RoutingError (undefined method `after_commit' for ImagesController:Class
Did you mean? after_action):
好了,真丟人!而且似乎這個回調已被棄用! 通過搜索,我試圖使用:after_create_commit,這給了我同樣的錯誤。
第三步是嘗試:after_action。這裏是問題: 如何使其工作方式與: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您是否想將此回調和屬於它的方法移動到模型中? –