每个实例的数据库中整数的随机默认值?

时间:2013-09-04 18:39:09

标签: ruby-on-rails database rails-activerecord

我正在使用此系统在我的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

1 个答案:

答案 0 :(得分:3)

使用before_create过滤器。

class RsEvaluation < ActiveRecord::Base

  before_create :update_value

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

end

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

module ReputationSystem

  class Evaluation < ActiveRecord::Base
    before_create :update_value

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

end

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