我有一个用户模型
has_many :trial_subscriptions
accepts_nested_attributes_for :trial_subscriptions, :allow_destroy => true
attr_accessible :trial_subscriptions_attributes
trial_subscription继承自订阅模型和此模型belongs_to :user
订阅模型belongs_to :question_bank
和问题库模型has_many :subscriptions, dependent: :destroy
我有一个正在创建用户及其发布的表单。
我想添加after_create
回调
使用一种方法,在检测到用户创建后,为用户和订阅的问题库启动试用订阅。
1)我是在用户模型还是trialubscription模型中进行回调?我在trialubscription模型中做到了
这是迄今为止的方法
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!
应该做的伎俩
答案 0 :(得分:0)
将回调放入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