如何为Ruby on Rails配置Devise以将电子邮件和密码存储在除用户模型之外的其他位置?

我想将电子邮件存储在单独的表中,并允许用户保存多封电子邮件并使用其中任何一封登录。 我还想将密码存储在另一个表中。

如何配置Devise以在其他地方存储身份validation信息?

最糟糕的情况是,如果我只是要入侵它,是否有一个生成器只是将所有内容移植到应用程序? 我注意到视图中有一个生成器。

谢谢。

为此,您只需正确设置模型,创建电子邮件关联。 此外,您必须从设计覆盖用户查找程序方法,为此,您必须覆盖self.find_for_database_authentication(conditions)方法。

class User < ActiveRecord::Base has_many :emails accepts_nested_attributes_for :emails ... def self.find_for_database_authentication(conditions) email = conditions.first self.where(:emails=>{:name=>email}) end end 

此外,您必须将电子邮件添加到您的devise.rb才能使用它。

 Devise.setup do |config| ... config.authentication_keys = [ :emails ] ... end 

我没有运行代码,也许它有一些错误,但我希望你能得到这个想法。 请让我知道是不是很清楚。 干杯。

更新

第一个问题:是的,来自设计的方法将被自动覆盖。

第二个问题:你应该有your_application_path / config / initializers / devise.rb我认为它是在你使用devise gem时创建的。 如果你没有,你可以创建它。 我指定的内容很好,只省略点(…)