在我的 Rails 应用程序中,我有一个 Like 模型。
### like.rb
### Custom Validator Code:
class UniquenessValidator < ActiveModel::Validator
def validate(record)
# Empty
end
end
class Like < ActiveRecord::Base
include ActiveModel::Validations
validates_with UniquenessValidator
attr_accessible :user_id
belongs_to :likeable, polymorphic: true
belongs_to :user
end
在我的 Rails 控制台中,我尝试执行 Like.all (目前我的 Likes 表是空的)
1.9.2p320 :001 > Like.all
RuntimeError: :attributes cannot be blank
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activemodel-3.2.3/lib/active_model/validator.rb:141:in `initialize'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activerecord-3.2.3/lib/active_record/validations/uniqueness.rb:7:in `initialize'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activemodel-3.2.3/lib/active_model/validations/with.rb:84:in `new'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activemodel-3.2.3/lib/active_model/validations/with.rb:84:in `block in validates_with'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activemodel-3.2.3/lib/active_model/validations/with.rb:83:in `each'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activemodel-3.2.3/lib/active_model/validations/with.rb:83:in `validates_with'
from /Users/user/Programming/WWW/Rails/experiments/test_app/app/models/like.rb:3:in `<class:Like>'
from /Users/user/Programming/WWW/Rails/experiments/test_app/app/models/like.rb:1:in `<top (required)>'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:469:in `load'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:469:in `block in load_file'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:639:in `new_constants_in'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:468:in `load_file'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:353:in `require_or_load'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:502:in `load_missing_constant'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:192:in `block in const_missing'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:190:in `each'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:190:in `const_missing'
from (irb):1
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/railties-3.2.3/lib/rails/commands/console.rb:47:in `start'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start'
from /Users/user/.rvm/gems/ruby-1.9.2-p320@test_app/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
1.9.2p320 :002 >
这里发生了什么 ?(顺便说一句,如果我删除validates_with UniquenessValidator
from Like.rb
,我不会收到此错误)