title: Subdomain sign in with Rails 4 and Devise 3.1.0
body: <p>UPDATE --</p>
  
  <p>I would recommend skipping direct to answer section -- goal of this was to allow multiple subdomains, each of which would have their own users/registrants.  A registrant could register on multiple subdomains, however each subdomain is treated independently and unassociated with the others.</p>
  
  <p>I feel this questions is still in need of a better answer so please contribute to it.</p>
  
  <p>===============</p>
  
  <p>ORIGINAL POST --</p>
  
  <p>Help please --</p>
  
  <p>scenario --
  My site is used by :teams, each of which has :users. Im trying to enable :users to log in via the :team subdomain.  (unique USER index keys are :email and :team_id -- the subdomain is part of a separate TEAM model that im trying to associate by :team_id in the user model during signin.)</p>
  
  <p>TEAM MODEL</p>
  
  <pre><code>has_many :users
  </code></pre>
  
  <p>USER MODEL</p>
  
  <pre><code>devise request_keys: [:team_id]
  belongs_to :team
  
  def self.find_for_authentication(warden_conditions)
    where(:email =&gt; warden_conditions[:email], :team_id =&gt; warden_conditions[:team_id]).first
  end
  </code></pre>
  
  <p>this is per the new instruction on devise wiki: <a href="https://github.com/plataformatec/devise/wiki/How-to:-Scope-login-to-subdomain" rel="nofollow">https://github.com/plataformatec/devise/wiki/How-to:-Scope-login-to-subdomain</a></p>
  
  <p>APPLICATION CONTROLLER</p>
  
  <p>I use before_action to set the team based on subdomain
  I also add the strong params the "lazy" way for team_id  / devise_parameter_sanitizer.for(:sign_in) &lt;&lt; :team_id</p>
  
  <p>DEVISE SESSIONS NEW VIEW (For USERS)</p>
  
  <p>I feel dirty doing this, but I have a hidden team_id input field</p>
  
  <p>AND THE ERROR DUMP <code>NoMethodError undefined method team_id</code></p>
  
  <pre><code>Started POST "/users/sign_in" for 111.0.0.1 at 2013-09-13 13:08:09 -0400
  Processing by Devise::SessionsController#create as HTML
    Parameters: {"utf8"=&gt;"✓", "authenticity_token"=&gt;"LONG TOKEN HERE=", "user"=&gt;{"email"=&gt;"user@site.com", "password"=&gt;"[FILTERED]", "remember_me"=&gt;"0"}, "team_id"=&gt;"16", "commit"=&gt;"Sign in"}
    [1m[35mTeam Load (0.2ms)[0m  SELECT "teams".* FROM "teams" WHERE "teams"."subdomain" = 'teamname' LIMIT 1
  Completed 500 Internal Server Error in 119ms
  
  NoMethodError (undefined method `team_id' for #&lt;ActionDispatch::Request:0x007ffe950c2150&gt;):
    devise (3.1.0) lib/devise/strategies/authenticatable.rb:142:in `block in request_values'
    devise (3.1.0) lib/devise/strategies/authenticatable.rb:142:in `map'
    devise (3.1.0) lib/devise/strategies/authenticatable.rb:142:in `request_values'
    devise (3.1.0) lib/devise/strategies/authenticatable.rb:122:in `with_authentication_hash'
    devise (3.1.0) lib/devise/strategies/authenticatable.rb:71:in `valid_for_params_auth?'
    devise (3.1.0) lib/devise/strategies/authenticatable.rb:16:in `valid?'
    warden (1.2.3) lib/warden/proxy.rb:351:in `block in _run_strategies_for'
    warden (1.2.3) lib/warden/proxy.rb:349:in `each'
    warden (1.2.3) lib/warden/proxy.rb:349:in `_run_strategies_for'
    warden (1.2.3) lib/warden/proxy.rb:319:in `_perform_authentication'
    warden (1.2.3) lib/warden/proxy.rb:127:in `authenticate!'
    devise (3.1.0) app/controllers/devise/sessions_controller.rb:15:in `create'
    actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
    actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
    actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
    actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
    activesupport (4.0.0) lib/active_support/callbacks.rb:463:in `_run__412684316733059520__process_action__callbacks'
    activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
    actionpack (4.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action'
    actionpack (4.0.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
    actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
    activesupport (4.0.0) lib/active_support/notifications.rb:159:in `block in instrument'
    activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    activesupport (4.0.0) lib/active_support/notifications.rb:159:in `instrument'
    actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
    actionpack (4.0.0) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
    activerecord (4.0.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
    actionpack (4.0.0) lib/abstract_controller/base.rb:136:in `process'
    actionpack (4.0.0) lib/abstract_controller/rendering.rb:44:in `process'
    actionpack (4.0.0) lib/action_controller/metal.rb:195:in `dispatch'
    actionpack (4.0.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
    actionpack (4.0.0) lib/action_controller/metal.rb:231:in `block in action'
    actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `call'
    actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
    actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:48:in `call'
    actionpack (4.0.0) lib/action_dispatch/routing/mapper.rb:44:in `call'
    actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
    actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `each'
    actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
    actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
    warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
    warden (1.2.3) lib/warden/manager.rb:34:in `catch'
    warden (1.2.3) lib/warden/manager.rb:34:in `call'
    rack (1.5.2) lib/rack/etag.rb:23:in `call'
    rack (1.5.2) lib/rack/conditionalget.rb:35:in `call'
    rack (1.5.2) lib/rack/head.rb:11:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/flash.rb:241:in `call'
    rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
    rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/cookies.rb:486:in `call'
    activerecord (4.0.0) lib/active_record/query_cache.rb:36:in `call'
    activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
    activerecord (4.0.0) lib/active_record/migration.rb:369:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
    activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1066722413265567725__call__callbacks'
    activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
    actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
    railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
    railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
    activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
    activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
    activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
    railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
    rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
    rack (1.5.2) lib/rack/runtime.rb:17:in `call'
    activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
    rack (1.5.2) lib/rack/lock.rb:17:in `call'
    actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
    railties (4.0.0) lib/rails/engine.rb:511:in `call'
    railties (4.0.0) lib/rails/application.rb:97:in `call'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:145:in `handle'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:99:in `rescue in block (2 levels) in start'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:96:in `block (2 levels) in start'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:86:in `each'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:86:in `block in start'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:66:in `loop'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:66:in `start'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:13:in `run'
    /Users/Home/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/bin/nack_worker:4:in `&lt;main&gt;'
  </code></pre>
  
  <p>Help is much appreciated. Thanks!</p>