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
4

1 回答 1

0

我认为问题在于您的 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 
于 2017-02-20T06:09:32.167 回答