【问题标题】:Ranked Model getting started排名模型入门
【发布时间】:2015-08-04 16:26:21
【问题描述】:

我正在尝试在 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 列在所有记录中为空白。

我做错了什么?

感谢您的帮助!

更新1

我现在相信Costproject.rank(:row_order).all 用于列出项目。我认为这是一个在列表中播种数字的命令。也许我不必这样做?

【问题讨论】:

  • 你能粘贴Costproject.rank(:row_order).all返回的SQL命令吗?
  • 我开始认为Costproject.rank(:row_order).all 并不是要播种数字。这就是我认为的目的。
  • 我现在相信是返回row_order中的列表
  • 哦,是的!你想在使用之前播种你的数据库rank
  • devkaroru 我究竟如何播种列表?我在哪里运行rank 还是其他命令? (做出回答,我会接受。)

标签: ruby-on-rails


【解决方案1】:

根据我们通过 cmets 的对话。这个问题看起来你需要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?

http://railscasts.com/episodes/179-seed-data

http://www.jasonwieringa.com/rake_rails_and_databases/

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 2014-02-15
  • 2020-10-07
  • 2013-06-06
  • 2012-04-17
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多