在rails应用中的任何位置显示自定义sign_in表单,但对于通过一个表单签名的2个设计模型

时间:2013-05-12 15:40:32

标签: ruby-on-rails ruby-on-rails-3 devise

我有两个设计模型,我希望在导航栏中有一个表单,我有电子邮件字段,密码和提交按钮。类似于设计签名已经提供的东西。但问题是,我有两个设计模型。如果我只有一个模型,根据本指南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

感谢任何帮助。感谢

2 个答案:

答案 0 :(得分:1)

你可以简单地做

@var1 = Model1.find_by_email(params[:email])
@var2 = Model2.find_by_email(params[:email]) 
sign_in @var1 || @var2
小解释 如果找不到任何内容,find_by_attr将返回nil 然后你有逻辑或可以签署现有用户。但是,如果没有找到任何记录,你应该添加类似避免sign_in nil的东西

sign_in(@var1 || @var2) if @var1 || @var2 

答案 1 :(得分:-1)

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

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