轨道上的装饰模型-5

问题描述 投票:0回答:1

在rails 4中,我有以下的装饰器代码。这是很好的工作

app/decorators/models/user_decorator.rb

User.class_eval do
  devise :omniauthable
end

现在我把rails升级到第5版。但它给我的错误

将omniauth_callbacks映射到不可全真资源上,请添加 devise :omniauthableUser 模型

我所有的模型都在单独的 gem 中,而我没有在该 gem 中安装 devise。这就是为什么我使用上述装饰器在我的应用程序中添加devise。我如何在rails-5中实现同样的功能?

ruby-on-rails ruby ruby-on-rails-5 decorator
1个回答
0
投票

试着用Concern来装饰用户模型,devise :omniauthable。从你提供的背景来看,class_eval不工作的原因并不明显。这可能与rails内部的魔法有关,因为从rails 4到5,内部的魔法可能已经发生了变化,所以使用Concern来为Model添加行为的 "rails方式 "可能会解决你的问题。

module OmniauthableUser

  extend ActiveSupport::Concern

  included do 
    devise :omniauthable
  end

end


app/decorators/models/user_decorator.rb

User.include OmniauthableUser
© www.soinside.com 2019 - 2024. All rights reserved.