我有两个模型Testimonial and Review。当我使用create_after方法创建推荐书时,我想创建一个包含相同推荐数据的评论。
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
我得到的错误是:
uninitialized constant
以下是完整的跟踪:
供应商/扩展/推荐/ app / models / refinery / testimonials / testimonial.rb:17:在make_lambda的create_review'
activesupport (4.2.1) lib/active_support/callbacks.rb:432:in
块中&#39;
activesupport(4.2.1)lib / active_support / callbacks.rb:228:在halting_and_conditional&#39;中的call'
activesupport (4.2.1) lib/active_support/callbacks.rb:228:in
块中
activesupport(4.2.1)lib / active_support / callbacks.rb:506:in call'
activesupport (4.2.1) lib/active_support/callbacks.rb:506:in
阻止呼叫&#39;
activesupport(4.2.1)lib / active_support / callbacks.rb:506:in each'
activesupport (4.2.1) lib/active_support/callbacks.rb:506:in
call&#39;
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&#39;
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&#39;
activerecord(4.2.1)lib / active_record / persistence.rb:502:在create_or_update&#39;中的create_or_update'
activerecord (4.2.1) lib/active_record/callbacks.rb:302:in
块中
activesupport(4.2.1)lib / active_support / callbacks.rb:117:在call'
activesupport (4.2.1) lib/active_support/callbacks.rb:117:in
来电&#39;
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:in
call&#39;
activesupport(4.2.1)lib / active_support / callbacks.rb:505:在call'
activesupport (4.2.1) lib/active_support/callbacks.rb:92:in
_ run_callbacks&#39;
activesupport(4.2.1)lib / active_support / callbacks.rb:776:在_run_save_callbacks'
activerecord (4.2.1) lib/active_record/callbacks.rb:302:in
create_or_update&#39;
activerecord(4.2.1)lib / active_record / persistence.rb:120:在save'
activerecord (4.2.1) lib/active_record/validations.rb:37:in
中保存&#39;
activerecord(4.2.1)lib / active_record / attribute_methods / dirty.rb:21:在save'
activerecord (4.2.1) lib/active_record/transactions.rb:286:in
块(2级)中保存&#39;
activerecord(4.2.1)lib / active_record / transactions.rb:347:在事务中的block in with_transaction_returning_status'
activerecord (4.2.1) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in
块中&#39;
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:in
transaction&#39;
activerecord(4.2.1)lib / active_record / transactions.rb:220:在transaction'
activerecord (4.2.1) lib/active_record/transactions.rb:344:in
with_transaction_returning_status&#39;
activerecord(4.2.1)lib / active_record / transactions.rb:286:in block in save'
activerecord (4.2.1) lib/active_record/transactions.rb:301:in
rollback_active_record_state!&#39;
activerecord(4.2.1)lib / active_record / transactions.rb:285:in save'
vendor/extensions/testimonials/app/controllers/refinery/testimonials/testimonials_controller.rb:23:in
create&#39;
actionpack(4.2.1)lib / action_controller / metal / implicit_render.rb:4:在send_action'
actionpack (4.2.1) lib/abstract_controller/base.rb:198:in
process_action&#39;
actionpack(4.2.1)lib / action_controller / metal / rendering.rb:10:在process_action&#39;中的process_action'
actionpack (4.2.1) lib/abstract_controller/callbacks.rb:20:in
块中
activesupport(4.2.1)lib / active_support / callbacks.rb:117:在call'
activesupport (4.2.1) lib/active_support/callbacks.rb:117:in
来电&#39;
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:in
call&#39;
activesupport(4.2.1)lib / active_support / callbacks.rb:505:在call'
activesupport (4.2.1) lib/active_support/callbacks.rb:92:in
_ run_callbacks&#39;
activesupport(4.2.1)lib / active_support / callbacks.rb:776:在_run_process_action_callbacks'
activesupport (4.2.1) lib/active_support/callbacks.rb:81:in
run_callbacks&#39;
actionpack(4.2.1)lib / abstract_controller / callbacks.rb:19:在process_action'
actionpack (4.2.1) lib/action_controller/metal/rescue.rb:29:in
process_action&#39;
actionpack(4.2.1)lib / action_controller / metal / instrumentation.rb:32:在block in process_action'
activesupport (4.2.1) lib/active_support/notifications.rb:164:in
块中的仪器&#39;
activesupport(4.2.1)lib / active_support / notifications / instrumenter.rb:20:in instrument'
activesupport (4.2.1) lib/active_support/notifications.rb:164:in
instrument&#39;
actionpack(4.2.1)lib / action_controller / metal / instrumentation.rb:30:在process_action'
actionpack (4.2.1) lib/action_controller/metal/params_wrapper.rb:250:in
process_action&#39;
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:in
进程&#39;
actionview(4.2.1)lib / action_view / rendering.rb:30:在process'
actionpack (4.2.1) lib/action_controller/metal.rb:196:in
发送&#39;
actionpack(4.2.1)lib / action_controller / metal / rack_delegation.rb:13:dispatch'
actionpack (4.2.1) lib/action_controller/metal.rb:237:in
阻止行动&#39;
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:in
dispatch&#39;
actionpack(4.2.1)lib / action_dispatch / routing / route_set.rb:43:在serve'
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:43:in
块中的服务&#39;
actionpack(4.2.1)lib / action_dispatch / journey / router.rb:30:在each'
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in
发送&#39;
actionpack(4.2.1)lib / action_dispatch / routing / route_set.rb:819:call'
railties (4.2.1) lib/rails/engine.rb:518:in
来电&#39;
railties(4.2.1)lib / rails / railtie.rb:194:public_send'
railties (4.2.1) lib/rails/railtie.rb:194:in
method_missing&#39;
actionpack(4.2.1)lib / action_dispatch / routing / mapper.rb:51:in serve'
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:43:in
block in serve&#39;
actionpack(4.2.1)lib / action_dispatch / journey / router.rb:30:在each'
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in
发送&#39;
actionpack(4.2.1)lib / action_dispatch / routing / route_set.rb:819:call'
dragonfly (1.0.10) lib/dragonfly/middleware.rb:14:in
来电&#39;
dragonfly(1.0.10)lib / dragonfly / middleware.rb:14:in call'
warden (1.2.3) lib/warden/manager.rb:35:in
阻止通话&#39;
warden(1.2.3)lib / warden / manager.rb:34:in catch'
warden (1.2.3) lib/warden/manager.rb:34:in
来电&#39;
rack(1.6.4)lib / rack / etag.rb:24:in call'
rack (1.6.4) lib/rack/conditionalget.rb:38:in
来电&#39;
rack(1.6.4)lib / rack / head.rb:13:in call'
actionpack (4.2.1) lib/action_dispatch/middleware/params_parser.rb:27:in
call&#39;
actionpack(4.2.1)lib / action_dispatch / middleware / flash.rb:260:call'
rack (1.6.4) lib/rack/session/abstract/id.rb:225:in
上下文&#39;
rack(1.6.4)lib / rack / session / abstract / id.rb:220:in call'
actionpack (4.2.1) lib/action_dispatch/middleware/cookies.rb:560:in
call&#39;
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:in
call&#39;
activerecord(4.2.1)lib / active_record / migration.rb:378:在call'
actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:29:in
阻止呼叫&#39;
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&#39;
activesupport(4.2.1)lib / active_support / callbacks.rb:776:在_run_call_callbacks'
activesupport (4.2.1) lib/active_support/callbacks.rb:81:in
run_callbacks&#39;
actionpack(4.2.1)lib / action_dispatch / middleware / callbacks.rb:27:in call'
actionpack (4.2.1) lib/action_dispatch/middleware/reloader.rb:73:in
call&#39;
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:in
call&#39;
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:in
call&#39;
railties(4.2.1)lib / rails / rack / logger.rb:38:in call_app'
railties (4.2.1) lib/rails/rack/logger.rb:20:in
阻止电话&#39;
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:in
已标记&#39;
activesupport(4.2.1)lib / active_support / tagged_logging.rb:68:in tagged'
railties (4.2.1) lib/rails/rack/logger.rb:20:in
call&#39;
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:in
来电&#39;
rack(1.6.4)lib / rack / methodoverride.rb:22:in call'
rack (1.6.4) lib/rack/runtime.rb:18:in
call&#39;
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:in
call&#39;
rack(1.6.4)lib / rack / lock.rb:17:in call'
actionpack (4.2.1) lib/action_dispatch/middleware/static.rb:113:in
call&#39;
rack(1.6.4)lib / rack / sendfile.rb:113:在call'
railties (4.2.1) lib/rails/engine.rb:518:in
来电&#39;
railties(4.2.1)lib / rails / application.rb:164:in call'
rack (1.6.4) lib/rack/lock.rb:17:in
call&#39;
rack(1.6.4)lib / rack / content_length.rb:15:in call'
rack (1.6.4) lib/rack/handler/webrick.rb:88:in
service&#39;
/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:in
运行&#39;
/Users/evanx/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:295:in在start_thread中阻止&#39;
我在这里缺少什么?
答案 0 :(得分:0)
Review模型属于Testimonial模型中的不同模块(命名空间)。 未初始化的常量错误即将到来,因为您正在尝试从定义它的命名空间外部访问类。您需要使用 命名空间解析运算符 (::)来访问在不同命名空间中定义的类。
您需要使用它的模块引用Review类,例如 Refinery :: Reviews :: Review ,假设它被定义为:
vtimestamp
答案 1 :(得分:0)
@evanx这是因为您必须调用包含模块的类。
所以在这里我想Refinery::Reviews::Review.create....
应该做的伎俩!
希望能帮助到你 ! :)