я столкнулся с нечетной ошибкой при попытке сделать обновление партии:Is: apps/'apps' зарезервированы в Rails v4?
rake db:caching:stats:calculate
rake aborted!
NoMethodError: undefined method `each' for 2548:Fixnum
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/associations/collection_association.rb:365:in `replace'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/associations/collection_association.rb:47:in `writer'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/associations/builder/association.rb:123:in `apps='
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/attribute_assignment.rb:54:in `public_send'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/attribute_assignment.rb:54:in `_assign_attribute'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/attribute_assignment.rb:35:in `each'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/attribute_assignment.rb:35:in `assign_attributes'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/persistence.rb:251:in `block in update'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/transactions.rb:351:in `block in with_transaction_returning_status'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/transactions.rb:220:in `transaction'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/transactions.rb:348:in `with_transaction_returning_status'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/persistence.rb:250:in `update'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/relation.rb:369:in `update'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/relation.rb:366:in `block in update'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/relation.rb:366:in `map'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/relation.rb:366:in `with_index'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/relation.rb:366:in `update'
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/querying.rb:8:in `update'
/home/ubuntu/workspace/pf_middleware/lib/tasks/caching/calculate_stats.rake:42:in `block (4 levels) in <top (required)>'
Tasks: TOP => db:caching:stats:calculate
Я производил довольно большой набор обновлений, поэтому я использовал следующий гарантировать, что я проходил в то, что я ожидал, и произвел ту же ошибку ,
School.update([1,2,3], [{apps: 11111},{apps: 22222},{apps: 33333}])
==> NoMethodError: undefined method `each' for 11111:Fixnum
Я проверил и перепроверял документацию, попробовал «приложения» вместо: приложений. Дважды проверено, что приложения были полем в школе и т. Д., Но не могли понять, почему я продолжал получать эту ошибку.
Я решил попробовать другое поле ... и это сработало!
hash = { 1 => { offers: 123 }, 2 => { offers: 321 } }
School.update(hash.keys, hash.values)
Это приводит меня к мысли, что: Приложения/«приложения» что-то особенное, но я не могу найти доказательство. У кого-нибудь есть мысли?
Спасибо!
У вас есть как ассоциация, так и столбец с тем же именем? –