0

我有两个设计模型,我希望在我的导航栏中有一个表单,其中有电子邮件字段、密码和提交按钮。类似于设计登录已经提供的东西。但问题是,我有两个设计模型。如果我只有一个模型,根据本指南https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

我可以将下面的代码粘贴到我的助手中,我会没事的,但是如果我有两个模型呢?如何让用户通过一张表格签名?

def resource_name
    :user
  end

  def resource
    @resource ||= User.new
  end

  def devise_mapping
    @devise_mapping ||= Devise.mappings[:user]
  end

任何帮助表示赞赏。谢谢

4

2 回答 2

1

你可以简单地做

@var1 = Model1.find_by_email(params[:email])
@var2 = Model2.find_by_email(params[:email]) 
sign_in @var1 || @var2

small explain find_by_attr 如果没有找到任何内容,则返回 nil,然后您使用逻辑或可以登录现有用户。sign_in nil但是,如果根本没有找到记录,您应该添加类似避免的内容

sign_in(@var1 || @var2) if @var1 || @var2 
于 2013-05-12T16:41:59.850 回答
-1

为 sign_in 表单创建一个包装模型,并在登录操作中使用逻辑来决定使用两个用户模型中的哪一个。

这不是一个真正的包装,但我想不出合适的词。

于 2013-05-12T15:52:30.393 回答