0

Railsアプリでコンテンツを投票するためにこのシステムを使用しています: https://github.com/twitter/activerecord-reputation-system

投票可能なアイテムのデフォルトスコアをインスタンスごとに乱数にする方法はありますか?

rand(5..12) のようなものを保存すると、ランダムなデフォルト値が 1 回だけ選択されます。異なる行またはフィールドごとにランダムなデフォルト値を取得するにはどうすればよいですか?

      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

でも; Evaluationは独自のモデルではなく、ライブラリのモデルであるため、クラスを開いてパッチを適用してみてください。

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 に答える