Поскольку вы используете Rails 3, у вас есть несколько приятных вариантов здесь.Я не уверен, что полностью понимаю вашу проблему, но я предполагаю, что вы хотите какой-то тип проверки, где оценка начинается с 1 и увеличивается каждый раз.*
И пример модели.
# Stick this in a lib file somewhere
class IncrementValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
record.errors[attribute] << "must increment score by +1 " unless value == (Shot.maximum(:score, :conditions => {:game_id => record.game_id} ).to_i + 1)
end
end
class Shot < ActiveRecord::Base
validates :score, :uniqueness => {:scope => :game_id}, :increment => true
end
Тестовый вывод:
$ ruby -I./test test/unit/shot_test.rb
Loaded suite test/unit/shot_test
Started
.
Finished in 0.042116 seconds.
1 tests, 5 assertions, 0 failures, 0 errors