我在 Rails 应用程序中使用 Devise,当用户登录时需要传递一个额外的字段(可能)。如果用户通过子域登录,一切正常。如果他们在没有子域的情况下进入,我希望他们被要求将其放入文本框中。子域不是用户模型的一部分,它是组织(公司)的一部分。这是视图```
<div class="row">
<%= f.email_field :email, :class => "input_text", :placeholder=> "Email" %>
</div>
<div class="row">
<%= f.password_field :password, :class => "input_text", :placeholder=> "Password" %>
</div>
<% if request.subdomain.blank? %>
<div class="row">
<%= f.text_field :subdomain, :class => "input_text", :placeholder=> "Organization" %>
</div>
<% end %>
```
这是用户模型的相关部分......
```
devise :token_authenticatable, :database_authenticatable, :recoverable, :rememberable, :trackable, :lockable,
:authentication_keys => [:email], :request_keys => [:subdomain]
def self.find_for_authentication(conditions={})
conditions[:organization_id] = Organization.find_by_subdomain(conditions[:subdomain]).id
conditions.delete(:subdomain)
super(conditions)
end
```
我最终在视图中为 nil 类未定义子域。
关于如何使这项工作的任何想法?