我正在尝试在Rails 3.2中使用gem 'ranked-model'
。
这是模型:
class Costproject < ActiveRecord::Base
include RankedModel
scope :active, where("coststatus_id IN (?)", [2, 3, 4, 5, 6] ).where("project_year = ?", Time.now.year + 1)
ranks :row_order,
:scope => :active
我在Rails控制台中运行了这个:
Costproject.rank(:row_order).all
之后,所有记录中的列row_order
都为空。
我做错了什么?
感谢您的帮助!
UPDATE1
我现在相信Costproject.rank(:row_order).all
用于列出项目。我认为这是在列表中播种数字的命令。也许我不必这样做?
答案 0 :(得分:0)
根据评论我们的谈话。在使用seed
命令之前,问题似乎需要rank
数据库。
因此,您可以通过rails console
,使用您的应用或修改seeds.rb
文件,通过几种方式为您的开发者数据库播种。
我建议您使用seeds.rb
文件,因为它是幂等的(http://en.wikipedia.org/wiki/Idempotence)
如果您没有,请打开db/seeds.rb
或创建一个。
创建一些记录:
Costproject.create(rank_order: 3, coststatus_id: 2, project_year: 2016)
Costproject.create(rank_order: 2, coststatus_id: 2, project_year: 2016)
Costproject.create(rank_order: 1, coststatus_id: 2, project_year: 2016)
这将在costprojects
表中插入3条记录。您必须将coststatus_id和project_year设置为范围的每个值。这些不会起作用:
Costproject.create(rank_order: 10)
Costproject.create(rank_order: 20, coststatus_id: 10)
Costproject.create(rank_order: 30, coststatus_id: 2, project_year: 2013)
然后通过终端你可以运行:
bundle exec rake db:seed
此rake任务将运行您的种子文件,就像您在rails console
中手动输入一样。
现在你应该能够做Costproject.rank(:row_order).all
。假设您在空数据库上运行种子文件,第一个模型应的id为3
。
欲了解更多信息:
What is the best way to seed a database in Rails?