0

我正在使用这个系统在我的 Rails 应用程序中投票内容:https ://github.com/twitter/activerecord-reputation-system

有没有办法让任何可投票项目的默认分数为每个实例一些随机数。

如果我存储诸如 rand(5..12) 之类的东西,它只会选择一次随机默认值,如何为每个不同的行或字段获取随机默认值?

      create_table "rs_evaluations", :force => true do |t|
t.string   "reputation_name"
t.integer  "source_id"
t.string   "source_type"
t.integer  "target_id"
t.string   "target_type"
t.float    "value",           :default => 0.0
t.datetime "created_at",                       :null => false
t.datetime "updated_at",                       :null => false

结尾

4

1 回答 1

3

使用before_create过滤器。

class RsEvaluation < ActiveRecord::Base

  before_create :update_value

  def update_value
    self.value = rand(5..12)
  end

end

然而; 由于评估不是您自己的模型,而是来自库的模型,因此请尝试打开该类并对其进行修补:

module ReputationSystem

  class Evaluation < ActiveRecord::Base
    before_create :update_value

    def update_value
      self.value = rand(5..12)
    end
  end

end

这将放置在您的config/initializers文件夹中。

于 2013-09-04T18:44:41.760 回答