Ruby on rails 如何使用“创建后”在模型中建立关联/记录

Ruby on rails 如何使用“创建后”在模型中建立关联/记录,ruby-on-rails,Ruby On Rails,我有一个用户模型 has_many :trial_subscriptions accepts_nested_attributes_for :trial_subscriptions, :allow_destroy => true attr_accessible :trial_subscriptions_attributes 试用订阅继承自订阅模型,此模型属于:user 订阅模式属于\u问题银行,而问题银行模式有许多:订阅、依赖::销毁 我有一个表单正在正确创建用户及其发布 我想在创建回调

我有一个用户模型

has_many :trial_subscriptions
accepts_nested_attributes_for :trial_subscriptions, :allow_destroy => true 
attr_accessible :trial_subscriptions_attributes
试用订阅继承自订阅模型,此模型
属于:user
订阅模式
属于\u问题银行
,而问题银行模式
有许多:订阅、依赖::销毁

我有一个表单正在正确创建用户及其发布

我想在创建回调后添加一个

使用一种方法,该方法在检测到用户创建后启动用户的试用订阅和订阅的问题库

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 

我认为
创建
应该做到这一点

将回调放入您的
用户
模型中:

#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
#app/models/user.rb
类用户
我没有尝试这个方法,但我的方法确实有效,但我用的是错误的模型。我从你的方法中得到了一个未定义的方法?但我认为你的方法也适用。是的,我认为它需要分配给一个即时变量或类似的变量(需要更多考虑)
#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