首页 > 解决方案 > 为什么“if 语句”在 Seeds.rb on Rails 上不起作用?

问题描述

我正在创建一个 Rails 6.0.2.2 应用程序。

我的问题是文件中的if语句seeds.rb不起作用。

出于好奇,我在下面添加了 if 语句。

if Plan.count == 0 # always true -- though it already have a lot of plan data.
  Plan.create!(name: 'スタート')
  Plan.create!(name: 'ライト')
  Plan.create!(name: 'スタンダード')
end

但是,每次我执行rake db:seed时,它总是播种这些数据。

当我运行时rails console,它会返回类似...

irb(main):073:0> Plan.count
   (0.8ms)  SELECT COUNT(*) FROM "plans"
=> 3
irb(main):074:0> Plan.count
   (1.0ms)  SELECT COUNT(*) FROM "plans"
=> 6
irb(main):076:0> Plan.count
   (1.3ms)  SELECT COUNT(*) FROM "plans"
=> 9
irb(main):077:0> Plan.count
   (1.5ms)  SELECT COUNT(*) FROM "plans"
=> 12

为什么Plan.all.count返回0错误?

标签: ruby-on-railsrubyruby-on-rails-6

解决方案


很奇怪。创建一个植物名称数组,迭代并创建如下

["Plant 1", "Plant 2", "Plant 3"].each do |plant|
  Plant.find_or_create_by!(name: plant)
end

推荐阅读