[英]Rails 5 ArgumentError (wrong number of arguments (1 for 0)
在我的Rails 5應用程序中,我使用Public_Activity gem,並且試圖記錄一個活動,但是遇到錯誤: ArgumentError (wrong number of arguments (1 for 0).
我試圖在控制器中記錄活動,但是由於無法弄清楚如何指定模型實例( CanvasProduct
)而遇到麻煩。 因此,我嘗試使用在文檔中找到的內容在模型中創建條目。
我的控制器(創建CanvasProduct
):
def add_product
product = Product.friendly.find(params[:product_id])
if @canvas.canvas_products.create product: product
render nothing: true, status: :created
else
render nothing: true, status: :bad_request
end
end
我的模特
class CanvasProduct < ActiveRecord::Base
belongs_to :canvas
belongs_to :product
include PublicActivity::Common
after_create :create_activity
def create_activity
@cp = self
@cp.create_activity :create, recipient: @cp.canvas
end
end
我認為問題出在您的after_create回調方法名稱上。 您已使用與gem的方法名稱相同的名稱定義了它。 因此,它僅覆蓋了gem的內置方法。 因此,當您致電:
@cp.create_activity :create, recipient: @cp.canvas
您實際上是在調用模型中定義的實例方法create_activity
,而不是gem提供的方法。 並請注意,您定義的方法不接受任何參數,但是在上一行中,您實際上是在傳遞參數。
那么,您可以嘗試將after_create回調方法名稱重命名為其他名稱嗎? 喜歡:
after_create :create_new_activity
def create_new_activity
@cp = self
@cp.create_activity :create, recipient: @cp.canvas
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.