1

我在 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 类未定义子域。

关于如何使这项工作的任何想法?

4

0 回答 0