I posted a question similar to this before and it was suggested that I use friendlyIds gem however it was not for me as I had some real issues with it. Moving swiftly on...
I'm trying to create URL's where it points to whatever.com/first_name-second_name I've got that working but it does not account for when people sign up with the same name.
I found this code online and to me it seems pretty sound - my generate_slug method is within my user_controller but when ever I attempt to sign up to my app again I get the error;
NoMethodError in UsersController#create undefined method `user' for #
Here's the generate_slug method;
def generate_slug
if user(:slug => full_name.parameterize).count > 0
n = 1
while user(:slug => "#{full_name.parameterize}-#{n}").count > 0
n += 1
end
self.slug= "#{full_name.parameterize}-#{n}"
else
self.slug = full_name.parameterize
end
end
And heres the users#create;
def create
user = User.find_by_email(params[:sessions][:email])
if user && user.authenticate(params[:sessions][:password])
if params[:remember_me]
cookies.permanent[:auth_token] = user.auth_token
else
cookies[:auth_token] = user.auth_token
end
redirect_to users_show_path(current_user), notice: "Logged in"
else
flash.now.alert = "Email or password is invalid."
render "new"
end
end
Can anyone see what's wrong with this? I've tried various things and hacking away at it but I'm very new to rails and not sure of what I'm doing wrong here.
Any help or pointers is much appreciated,
Thanks for your time!
Edit
1 - Here is the full trace;
activemodel (3.2.10) lib/active_model/attribute_methods.rb:407:in `method_missing'
activerecord (3.2.10) lib/active_record/attribute_methods.rb:149:in `method_missing'
app/models/user.rb:38:in `generate_slug'
activesupport (3.2.10) lib/active_support/callbacks.rb:418:in `_run__4251811508524484974__create__672836159521965693__callbacks'
activesupport (3.2.10) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.10) lib/active_support/callbacks.rb:385:in `_run_create_callbacks'
activesupport (3.2.10) lib/active_support/callbacks.rb:81:in `run_callbacks'
activerecord (3.2.10) lib/active_record/callbacks.rb:268:in `create'
activerecord (3.2.10) lib/active_record/persistence.rb:348:in `create_or_update'
activerecord (3.2.10) lib/active_record/callbacks.rb:264:in `block in create_or_update'
activesupport (3.2.10) lib/active_support/callbacks.rb:403:in `_run__4251811508524484974__save__672836159521965693__callbacks'
activesupport (3.2.10) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.10) lib/active_support/callbacks.rb:385:in `_run_save_callbacks'
activesupport (3.2.10) lib/active_support/callbacks.rb:81:in `run_callbacks'
activerecord (3.2.10) lib/active_record/callbacks.rb:264:in `create_or_update'
activerecord (3.2.10) lib/active_record/persistence.rb:84:in `save'
activerecord (3.2.10) lib/active_record/validations.rb:50:in `save'
activerecord (3.2.10) lib/active_record/attribute_methods/dirty.rb:22:in `save'
activerecord (3.2.10) lib/active_record/transactions.rb:259:in `block (2 levels) in save'
activerecord (3.2.10) lib/active_record/transactions.rb:313:in `block in with_transaction_returning_status'
activerecord (3.2.10) lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
activerecord (3.2.10) lib/active_record/transactions.rb:208:in `transaction'
activerecord (3.2.10) lib/active_record/transactions.rb:311:in `with_transaction_returning_status'
activerecord (3.2.10) lib/active_record/transactions.rb:259:in `block in save'
activerecord (3.2.10) lib/active_record/transactions.rb:270:in `rollback_active_record_state!'
activerecord (3.2.10) lib/active_record/transactions.rb:258:in `save'
app/controllers/users_controller.rb:10:in `create'
actionpack (3.2.10) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.10) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.10) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.10) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.10) lib/active_support/callbacks.rb:414:in `_run__1712494193629644471__process_action__997902979293854086__callbacks'
activesupport (3.2.10) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.10) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.10) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.10) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.10) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.10) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.10) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.10) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.10) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.10) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.10) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
activerecord (3.2.10) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.10) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.10) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.10) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.10) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.10) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.10) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (3.2.10) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (3.2.10) 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.10) lib/action_dispatch/routing/route_set.rb:601:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.3) lib/rack/etag.rb:23:in `call'
rack (1.4.3) lib/rack/conditionalget.rb:35:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.3) lib/rack/session/abstract/id.rb:210:in `context'
rack (1.4.3) lib/rack/session/abstract/id.rb:205:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.10) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.10) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.10) lib/active_support/callbacks.rb:405:in `_run__4266248573959168775__call__672836159521965693__callbacks'
activesupport (3.2.10) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.10) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.10) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.10) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.10) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.10) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.10) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.10) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.3) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.3) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.10) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.3) lib/rack/lock.rb:15:in `call'
actionpack (3.2.10) lib/action_dispatch/middleware/static.rb:62:in `call'
railties (3.2.10) lib/rails/engine.rb:479:in `call'
railties (3.2.10) lib/rails/application.rb:223:in `call'
rack (1.4.3) lib/rack/content_length.rb:14:in `call'
railties (3.2.10) lib/rails/rack/log_tailer.rb:17:in `call'
rack (1.4.3) lib/rack/handler/webrick.rb:59:in `service'
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
2 - The generate_slug is being created in a before_create in the user model
3 - I was having some issues with that as well - it seems to be very temperamental - As you said I tried to change to user but that didn't work - however current_user doesn't work any more - I'll look into that just now
4 - No I'm not using an authentication gem - I'm just using this to try and learn some rails and the theory behind it so I'm trying to stay clear of gems :)