ruby-on-rails – Rails:after_add给出错误的参数数量错误(1表
发布时间:2020-12-16 20:58:12 所属栏目:百科 来源:网络整理
导读:我有以下型号: class Review ActiveRecord::Base attr_accessible :votes_sum has_many :votes,:as = :voteable,:after_add = :sum_votes,:after_remove = :sum_votes def sum_votes update_attribute(:votes_sum,votes.sum(:value)) endend 和: class Vot
我有以下型号:
class Review < ActiveRecord::Base attr_accessible :votes_sum has_many :votes,:as => :voteable,:after_add => :sum_votes,:after_remove => :sum_votes def sum_votes update_attribute(:votes_sum,votes.sum(:value)) end end 和: class Vote < ActiveRecord::Base attr_accessible :value belongs_to :voteable,:polymorphic => true end 当我尝试创建投票时,我收到此错误: wrong number of arguments (1 for 0) 这是在review.rb第13行触发的: def sum_votes 这个论点来自哪里?当我打电话给sum_votes时,我并没有传递参数. 更新: 完整堆栈跟踪: app/models/review.rb:13:in `sum_votes' activerecord (3.2.11) lib/active_record/associations/collection_association.rb:507:in `block in callback' activerecord (3.2.11) lib/active_record/associations/collection_association.rb:504:in `each' activerecord (3.2.11) lib/active_record/associations/collection_association.rb:504:in `callback' activerecord (3.2.11) lib/active_record/associations/collection_association.rb:352:in `add_to_target' activerecord (3.2.11) lib/active_record/associations/collection_association.rb:112:in `build' C:in `build' app/models/user.rb:251:in `build_vote' app/controllers/votes_controller.rb:9:in `create' actionpack (3.2.11) lib/action_controller/metal/implicit_render.rb:4:in `send_action' actionpack (3.2.11) lib/abstract_controller/base.rb:167:in `process_action' actionpack (3.2.11) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (3.2.11) lib/abstract_controller/callbacks.rb:18:in `block in process_action' activesupport (3.2.11) lib/active_support/callbacks.rb:425:in `_run__943985968__process_action__580999264__callbacks' activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks' activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.11) lib/abstract_controller/callbacks.rb:17:in `process_action' actionpack (3.2.11) lib/action_controller/metal/rescue.rb:29:in `process_action' actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' activesupport (3.2.11) lib/active_support/notifications.rb:123:in `block in instrument' activesupport (3.2.11) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (3.2.11) lib/active_support/notifications.rb:123:in `instrument' actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:29:in `process_action' actionpack (3.2.11) lib/action_controller/metal/params_wrapper.rb:207:in `process_action' activerecord (3.2.11) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (3.2.11) lib/abstract_controller/base.rb:121:in `process' actionpack (3.2.11) lib/abstract_controller/rendering.rb:45:in `process' actionpack (3.2.11) lib/action_controller/metal.rb:203:in `dispatch' actionpack (3.2.11) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' actionpack (3.2.11) lib/action_controller/metal.rb:246:in `block in action' actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `call' actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `dispatch' actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:36:in `call' journey (1.0.4) lib/journey/router.rb:68:in `block in call' journey (1.0.4) lib/journey/router.rb:56:in `each' journey (1.0.4) lib/journey/router.rb:56:in `call' actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in `call' warden (1.2.1) lib/warden/manager.rb:35:in `block in call' warden (1.2.1) lib/warden/manager.rb:34:in `catch' warden (1.2.1) lib/warden/manager.rb:34:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' rack (1.4.4) lib/rack/etag.rb:23:in `call' rack (1.4.4) lib/rack/conditionalget.rb:35:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/head.rb:14:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/flash.rb:242:in `call' rack (1.4.4) lib/rack/session/abstract/id.rb:210:in `context' rack (1.4.4) lib/rack/session/abstract/id.rb:205:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/cookies.rb:341:in `call' activerecord (3.2.11) lib/active_record/query_cache.rb:64:in `call' activerecord (3.2.11) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `_run__942047474__call__281283767__callbacks' activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:27:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:65:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app' railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call' activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged' railties (3.2.11) lib/rails/rack/logger.rb:16:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call' rack (1.4.4) lib/rack/methodoverride.rb:21:in `call' rack (1.4.4) lib/rack/runtime.rb:17:in `call' activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call' rack (1.4.4) lib/rack/lock.rb:15:in `call' actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call' railties (3.2.11) lib/rails/engine.rb:479:in `call' railties (3.2.11) lib/rails/application.rb:223:in `call' rack (1.4.4) lib/rack/content_length.rb:14:in `call' railties (3.2.11) lib/rails/rack/log_tailer.rb:17:in `call' rack (1.4.4) lib/rack/handler/webrick.rb:59:in `service' C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' 解决方法
Mongoid将关联集合中创建的文档传递给回调方法,请参见此处:
Relation callbacks
您将不得不更改方法的签名以接收该文档,即使您不使用它(我也通过使用inc改进了方法): def sum_votes(vote) inc(:votes_sum,1) end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |