1
votes

I have two models Testimonial and Review.When I create a Testimonial with create_after method I want to create a review with the same testimonial data.

class Testimonial < ...
  after_create :create_review

  def create_review
    Review.create(name: self.name, email: self.email,
                  country: self.country, r_status: "No Publicar",
                  testimony: self.testimony)
  end
end

The error I'm getting is:

uninitialized constant 

Here is the full trace: vendor/extensions/testimonials/app/models/refinery/testimonials/testimonial.rb:17:in create_review' activesupport (4.2.1) lib/active_support/callbacks.rb:432:inblock in make_lambda' activesupport (4.2.1) lib/active_support/callbacks.rb:228:in call' activesupport (4.2.1) lib/active_support/callbacks.rb:228:inblock in halting_and_conditional' activesupport (4.2.1) lib/active_support/callbacks.rb:506:in call' activesupport (4.2.1) lib/active_support/callbacks.rb:506:inblock in call' activesupport (4.2.1) lib/active_support/callbacks.rb:506:in each' activesupport (4.2.1) lib/active_support/callbacks.rb:506:incall' activesupport (4.2.1) lib/active_support/callbacks.rb:92:in _run_callbacks' activesupport (4.2.1) lib/active_support/callbacks.rb:776:in_run_create_callbacks' activerecord (4.2.1) lib/active_record/callbacks.rb:306:in _create_record' activerecord (4.2.1) lib/active_record/timestamp.rb:57:in_create_record' activerecord (4.2.1) lib/active_record/persistence.rb:502:in create_or_update' activerecord (4.2.1) lib/active_record/callbacks.rb:302:inblock in create_or_update' activesupport (4.2.1) lib/active_support/callbacks.rb:117:in call' activesupport (4.2.1) lib/active_support/callbacks.rb:117:incall' activesupport (4.2.1) lib/active_support/callbacks.rb:555:in block (2 levels) in compile' activesupport (4.2.1) lib/active_support/callbacks.rb:505:incall' activesupport (4.2.1) lib/active_support/callbacks.rb:505:in call' activesupport (4.2.1) lib/active_support/callbacks.rb:92:in_run_callbacks' activesupport (4.2.1) lib/active_support/callbacks.rb:776:in _run_save_callbacks' activerecord (4.2.1) lib/active_record/callbacks.rb:302:increate_or_update' activerecord (4.2.1) lib/active_record/persistence.rb:120:in save' activerecord (4.2.1) lib/active_record/validations.rb:37:insave' activerecord (4.2.1) lib/active_record/attribute_methods/dirty.rb:21:in save' activerecord (4.2.1) lib/active_record/transactions.rb:286:inblock (2 levels) in save' activerecord (4.2.1) lib/active_record/transactions.rb:347:in block in with_transaction_returning_status' activerecord (4.2.1) lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction' activerecord (4.2.1) lib/active_record/connection_adapters/abstract/transaction.rb:188:in within_new_transaction' activerecord (4.2.1) lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction' activerecord (4.2.1) lib/active_record/transactions.rb:220:in transaction' activerecord (4.2.1) lib/active_record/transactions.rb:344:inwith_transaction_returning_status' activerecord (4.2.1) lib/active_record/transactions.rb:286:in block in save' activerecord (4.2.1) lib/active_record/transactions.rb:301:inrollback_active_record_state!' activerecord (4.2.1) lib/active_record/transactions.rb:285:in save' vendor/extensions/testimonials/app/controllers/refinery/testimonials/testimonials_controller.rb:23:increate' actionpack (4.2.1) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (4.2.1) lib/abstract_controller/base.rb:198:inprocess_action' actionpack (4.2.1) lib/action_controller/metal/rendering.rb:10:in process_action' actionpack (4.2.1) lib/abstract_controller/callbacks.rb:20:inblock in process_action' activesupport (4.2.1) lib/active_support/callbacks.rb:117:in call' activesupport (4.2.1) lib/active_support/callbacks.rb:117:incall' activesupport (4.2.1) lib/active_support/callbacks.rb:555:in block (2 levels) in compile' activesupport (4.2.1) lib/active_support/callbacks.rb:505:incall' activesupport (4.2.1) lib/active_support/callbacks.rb:505:in call' activesupport (4.2.1) lib/active_support/callbacks.rb:92:in_run_callbacks' activesupport (4.2.1) lib/active_support/callbacks.rb:776:in _run_process_action_callbacks' activesupport (4.2.1) lib/active_support/callbacks.rb:81:inrun_callbacks' actionpack (4.2.1) lib/abstract_controller/callbacks.rb:19:in process_action' actionpack (4.2.1) lib/action_controller/metal/rescue.rb:29:inprocess_action' actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:32:in block in process_action' activesupport (4.2.1) lib/active_support/notifications.rb:164:inblock in instrument' activesupport (4.2.1) lib/active_support/notifications/instrumenter.rb:20:in instrument' activesupport (4.2.1) lib/active_support/notifications.rb:164:ininstrument' actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:30:in process_action' actionpack (4.2.1) lib/action_controller/metal/params_wrapper.rb:250:inprocess_action' activerecord (4.2.1) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (4.2.1) lib/abstract_controller/base.rb:137:inprocess' actionview (4.2.1) lib/action_view/rendering.rb:30:in process' actionpack (4.2.1) lib/action_controller/metal.rb:196:indispatch' actionpack (4.2.1) lib/action_controller/metal/rack_delegation.rb:13:in dispatch' actionpack (4.2.1) lib/action_controller/metal.rb:237:inblock in action' actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:74:in call' actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:74:indispatch' actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:43:in serve' actionpack (4.2.1) lib/action_dispatch/journey/router.rb:43:inblock in serve' actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in each' actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:inserve' actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:819:in call' railties (4.2.1) lib/rails/engine.rb:518:incall' railties (4.2.1) lib/rails/railtie.rb:194:in public_send' railties (4.2.1) lib/rails/railtie.rb:194:inmethod_missing' actionpack (4.2.1) lib/action_dispatch/routing/mapper.rb:51:in serve' actionpack (4.2.1) lib/action_dispatch/journey/router.rb:43:inblock in serve' actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in each' actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:inserve' actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:819:in call' dragonfly (1.0.10) lib/dragonfly/middleware.rb:14:incall' dragonfly (1.0.10) lib/dragonfly/middleware.rb:14:in call' warden (1.2.3) lib/warden/manager.rb:35:inblock in call' warden (1.2.3) lib/warden/manager.rb:34:in catch' warden (1.2.3) lib/warden/manager.rb:34:incall' rack (1.6.4) lib/rack/etag.rb:24:in call' rack (1.6.4) lib/rack/conditionalget.rb:38:incall' rack (1.6.4) lib/rack/head.rb:13:in call' actionpack (4.2.1) lib/action_dispatch/middleware/params_parser.rb:27:incall' actionpack (4.2.1) lib/action_dispatch/middleware/flash.rb:260:in call' rack (1.6.4) lib/rack/session/abstract/id.rb:225:incontext' rack (1.6.4) lib/rack/session/abstract/id.rb:220:in call' actionpack (4.2.1) lib/action_dispatch/middleware/cookies.rb:560:incall' activerecord (4.2.1) lib/active_record/query_cache.rb:36:in call' activerecord (4.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:649:incall' activerecord (4.2.1) lib/active_record/migration.rb:378:in call' actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.2.1) lib/active_support/callbacks.rb:88:in call' activesupport (4.2.1) lib/active_support/callbacks.rb:88:in_run_callbacks' activesupport (4.2.1) lib/active_support/callbacks.rb:776:in _run_call_callbacks' activesupport (4.2.1) lib/active_support/callbacks.rb:81:inrun_callbacks' actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in call' actionpack (4.2.1) lib/action_dispatch/middleware/reloader.rb:73:incall' actionpack (4.2.1) lib/action_dispatch/middleware/remote_ip.rb:78:in call' actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:incall' web-console (2.1.3) lib/web_console/middleware.rb:37:in call' actionpack (4.2.1) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.2.1) lib/rails/rack/logger.rb:38:in call_app' railties (4.2.1) lib/rails/rack/logger.rb:20:inblock in call' activesupport (4.2.1) lib/active_support/tagged_logging.rb:68:in block in tagged' activesupport (4.2.1) lib/active_support/tagged_logging.rb:26:intagged' activesupport (4.2.1) lib/active_support/tagged_logging.rb:68:in tagged' railties (4.2.1) lib/rails/rack/logger.rb:20:incall' quiet_assets (1.1.0) lib/quiet_assets.rb:27:in call_with_quiet_assets' actionpack (4.2.1) lib/action_dispatch/middleware/request_id.rb:21:incall' rack (1.6.4) lib/rack/methodoverride.rb:22:in call' rack (1.6.4) lib/rack/runtime.rb:18:incall' activesupport (4.2.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in call' dragonfly (1.0.10) lib/dragonfly/cookie_monster.rb:9:incall' rack (1.6.4) lib/rack/lock.rb:17:in call' actionpack (4.2.1) lib/action_dispatch/middleware/static.rb:113:incall' rack (1.6.4) lib/rack/sendfile.rb:113:in call' railties (4.2.1) lib/rails/engine.rb:518:incall' railties (4.2.1) lib/rails/application.rb:164:in call' rack (1.6.4) lib/rack/lock.rb:17:incall' rack (1.6.4) lib/rack/content_length.rb:15:in call' rack (1.6.4) lib/rack/handler/webrick.rb:88:inservice' /Users/evanx/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:138:in service' /Users/evanx/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:94:inrun' /Users/evanx/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'

What am I missing here?

2
Can you provide the complete logs? what is the uninitialized constant here?Kumar Akarsh
@Akarsh I added the full trace.evanx
Where is the Review model located, I need the complete file path?Kumar Akarsh
@Akarsh /vendor/extensions/reviews/models/refinery/reviews/review.rbevanx

2 Answers

0
votes

The Review model belongs to a different module(namespace) from the Testimonial model. The uninitialized constant error is coming because you are trying to access a class from outside it's namespace where it is defined. You need to use the namespace resolution operator (::) to access a class defined in a different namespace.

You need to reference the Review class with it's module like Refinery::Reviews::Review assuming it's defined as:

module Refinery
  module Reviews
    class Review < ...
    end
  end
end
0
votes

@evanx this is because you have to call the class including the modules. So here I guess Refinery::Reviews::Review.create.... should do the trick ! Hope it helps ! :)