首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用after_create在模型中构建关联/记录

如何使用after_create在模型中构建关联/记录
EN

Stack Overflow用户
提问于 2014-03-25 02:41:27
回答 1查看 741关注 0票数 2

我有一个用户模型

代码语言:javascript
运行
复制
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模型中这样做

以下是目前为止的方法

代码语言:javascript
运行
复制
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++中,当我在表单中提交一个新用户后,我继续执行

代码语言:javascript
运行
复制
a = User.last
a.trial_subscriptions #returns an array 

我认为create!应该做到这一点

EN

回答 1

Stack Overflow用户

发布于 2014-03-25 18:38:02

将回调放入您的User模型中:

代码语言:javascript
运行
复制
#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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22617920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档