Вы можете создать свой собственный метод и обратный вызов.
class ShoppingCart < ActiveRecord::Base
has_many :items
before_validation :check_items
def check_items
items.each do |item|
# check if valid and add to errors if any
end
return false if errors.any? # this will cause save to return false
end
end
См. http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html