我正在使用此系统在我的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
端
答案 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
文件夹中。