我有一个应用程序,用户添加订阅,并自动为该订阅创建帐户。我还想将当前用户作为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是创建关联帐户的最佳方式,如何将用户传递给帐户模型?谢谢!
答案 0 :(得分:1)
如果您正在使用设计,可以使用current_user帮助程序直接在控制器中执行此操作,而无需回调:
# subscriptions_controller.rb
def create
...
if @subscription.save
@subscription.create_account(account_manager: current_user)
end
end