ruby-on-rails - 如何在有条件的情况下使用 After_save?

标签 ruby-on-rails ruby-on-rails-3

我无法在谷歌上找到它。 我有 3 个模型。

模型 1 -> has_many 模型 2 -> 有很多模型 3

模型 1 具有确定可以创建多少个模型 2 的字段。并且模型 2 具有字段以了解必须创建多少个模型 3。

我希望在保存模型 1 时自动创建模型 2 和模型 3。

我想使用模型 1 after_create create_model2_record

def create_model2_record
  for(x=0, x<=model1.field; x++){  #c sample
    @model2 = Model2.new
  }
end 

如何使用 Rails 3 处理这个问题? 谢谢

最佳答案

class Model1 << ....
  after_save :create_related_models, :if => :some_condn? #use the condition only if needed

  def create_related_models
    @model2 = Model2.new
    @model2... = ...  #assign values to Model2 variables
    if @model2.save
      @model3 = Model3.new
      @model3... = ...  #assign values to Model3 variables
      @model3.save
    end
  end
  ...
end

好吧,这是如何完成的基本概念。你可以随意更改create_related_models里面的代码,也可以选择使用或者不使用after_save中的条件。使用条件的一种场景可能是需要根据Model1中某个变量的值来决定是否创建Model2和Model3。我希望这对你有用。谢谢。

关于ruby-on-rails - 如何在有条件的情况下使用 After_save?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7116147/

相关文章:

ruby-on-rails - 这个 Rspec 测试有什么问题

ruby-on-rails - ActiveRecord:验证和写入数据库之间的并发访问

ruby-on-rails - rails 3 : easiest way to load a large seed list (20, 000 个单词)到 Heroku 应用程序上的表中(使用 rake 种子)?

ruby-on-rails - Rails,如何将生日字符串 "06/20/1980"存储在数据库的时间戳字段中?

ruby-on-rails - 在 Rails 3 中跨多个子域删除 session Cookie

ruby-on-rails - 如何测试一个 before_save 方法,包括与 rspec 的关联

ruby-on-rails - Rails 搜索/复选框逻辑

ruby-on-rails-3 - 在 Resque 中重新排队失败的作业

ruby-on-rails - 在 OSX catalina(10.15.1) 中使用 rbenv 安装 ruby​​-2.4.0 时构建失败(OS X 10.15.1 使用 ruby​​-build 20191124)

ruby-on-rails - 无法测试 session [:user_id] value set in POST #create in SessionsController spec with RSpec/Rails