我有两个设计模型,我希望在导航栏中有一个表单,我有电子邮件字段,密码和提交按钮。类似于设计签名已经提供的东西。但问题是,我有两个设计模型。如果我只有一个模型,根据本指南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
感谢任何帮助。感谢
答案 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表单创建一个包装器模型,并在登录操作中使用逻辑来决定使用哪两个用户模型。
这不是一个真正的包装,但我想不出正确的词。