ruby-on-rails - 为什么“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
错误?
解决方案
很奇怪。创建一个植物名称数组,迭代并创建如下
["Plant 1", "Plant 2", "Plant 3"].each do |plant|
Plant.find_or_create_by!(name: plant)
end
推荐阅读
- opencv - 用于标记子图像的 OpenCV Rect 结构
- python - 如何在给定多个“开始”和“结束”日期时间对象的情况下找到差距?
- google-sheets - 谷歌表格查询日期大于另一个日期 + 15 天
- javascript - 三元运算符和 && 运算符之间的确切区别是什么?
- python - re.sub(".*", ", "(replacement)", "text") 在 Python 3.7 上加倍替换
- python - nginx到静态页面的路径错误
- windows - 在具有 Hyper-V 隔离和 LCOW 的 Windows 上运行多个独立的 Docker 守护程序
- python - Dask 和字段名称中的多次合并
- c# - 检查一个控件是否在另一个之上
- c++ - 发送命令并等待回复 USB 设备