我有一个用户模型
has_many :trial_subscriptions
accepts_nested_attributes_for :trial_subscriptions, :allow_destroy => true
attr_accessible :trial_subscriptions_attributes
trial_subscription继承自订阅模型,该模型继承了订阅模型belongs_to :question_bank
和题库模型has_many :subscriptions, dependent: :destroy
我有一个表单,这是创建一个用户和它的张贴正确。
我想添加一个after_create
回调
以及在检测到用户创建之后启动用户的试用订阅和订阅的题库的方法。
1)我是在用户模型中回调还是在试用订阅模型中回调?我在trialsubscription模型中这样做
以下是目前为止的方法
class TrialSubscription < ManualSubscription
after_create :create_trial_subscription_for_all_qbanks
def create_trial_subscription_for_all_qbanks
if !trial_account_made_by.nil? #in User
QuestionBank.all each do |q|
TrialSubscription.create!(question_bank_id: q.id, user_id: self.id, manual_expiry_date: Time.now + (2*7*24*60*60) )
end
end
end
end
在我的rails c++中,当我在表单中提交一个新用户后,我继续执行
a = User.last
a.trial_subscriptions #returns an array
我认为create!
应该做到这一点
发布于 2014-03-25 18:38:02
将回调放入您的User
模型中:
#app/models/user.rb
Class User < ActiveRecord::Base
has_many :trial_subscriptions
after_create :create_trial
def create_trial
QuestionBank.all each do |q|
self.trial_subscriptions.build({question_bank_id: q.id, manual_expiry_date: Time.now + (2*7*24*60*60)})
end
self.trial_subscriptions.save
end
end
https://stackoverflow.com/questions/22617920
复制相似问题