使用after_create方法Rails时传递参数

时间:2016-03-07 21:01:18

标签: ruby-on-rails model associations

我有一个应用程序,用户添加订阅,并自动为该订阅创建帐户。我还想将当前用户作为account_manager传递给帐户模型。到目前为止,我有:

class Subscription < ActiveRecord::Base
  has_one :account
  after_create :create_account #after a subscription is created, automatically create an associated account

  def create_account
   Account.create :account_manager_id => "1" #need to modify this to get current user
  end
end



class Account < ActiveRecord::Base
  has_many :users 
  belongs_to :account_manager, :class_name => 'User', :foreign_key => 'account_manager_id'
  belongs_to :subscription, :dependent => :destroy
end

这显然适用于第一个用户,但我通过current_user,self,params等所做的任何尝试都失败了。此外,当我使用def方法时,订阅ID不再传递给帐户。我尝试通过AccountController传递当前用户但没有任何反应。事实上,如果我的AccountController完全空白,我仍然可以创建一个帐户。 after_create是创建关联帐户的最佳方式,如何将用户传递给帐户模型?谢谢!

1 个答案:

答案 0 :(得分:1)

如果您正在使用设计,可以使用current_user帮助程序直接在控制器中执行此操作,而无需回调:

# subscriptions_controller.rb
def create
  ...
  if @subscription.save
    @subscription.create_account(account_manager: current_user)
  end
end