【问题标题】:How to determine if an array is saved in rails?如何确定数组是否保存在rails中?
【发布时间】:2013-03-22 17:23:11
【问题描述】:

在我的seed.rb中

  puts 'DEFAULT Categories'
  categories = Category.create([{name:'cat1'},{name:'cat2'}, {name: 'cat3'} ])
  if categories.save
    puts "categories saved"
  else
    puts "categories save failed"
  end

我用它来设置默认类别 但问题是我无法if categories.save 查看是否所有类别项目都已保存,因此 seed.rb 是否通过 那么,如何查看数组是否被保存? (所有元素) 谢谢

【问题讨论】:

    标签: ruby-on-rails ruby arrays seed


    【解决方案1】:

    使用create! 代替create。如果保存失败会引发异常。

    【讨论】:

    • 很多时候(如果不是大多数),由于保存错误而导致应用异常崩溃是个坏主意。最好检查 Model.save 是否返回 true 或 false,然后在必要时呈现错误。
    • 对于面向用户的东西,我会同意。但这是一个种子任务。
    • 非常正确。在这种情况下,您可能需要在种子期间炸毁应用程序。
    【解决方案2】:
    if categories.all?(&:save)
      puts "categories saved"
    else
      [...]
    end
    

    【讨论】:

      【解决方案3】:

      .create 正在创建记录。因此,当您执行 if 语句时,什么都没有发生,因为在创建过程中保存已经发生。

      将您的.create 更改为.new,您将能够检查保存是否成功:

      puts 'DEFAULT Categories'
      categories = Category.new([{name:'cat1'},{name:'cat2'}, {name: 'cat3'} ])  
      if categories.save  
        puts "categories saved"  
      else  
        puts "categories save failed"  
      end  
      

      【讨论】:

        【解决方案4】:
        if categories.all.each(&:persisted?)
          puts "categories saved"
        else
          [...]
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-10
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 2021-11-23
          • 1970-01-01
          • 2014-11-07
          相关资源
          最近更新 更多