如何从门卫宝石中覆盖模型

时间:2014-12-03 05:36:47

标签: ruby-on-rails gem doorkeeper

您是否知道如何覆盖门卫gem提供的Doorkeeper::Application。让我说我想添加验证,回调等等。 Db表名为auth_applications

我创建了一个名为application.rb的模型,其中包含以下内容,但我的before_create调用未被触发。什么是最好的方法?

module Doorkeeper
  class Application < ActiveRecord::Base
    include ApplicationMixin

    require 'identicon'
    before_create :generate_identicon

    def generate_identicon
      self.identicon = Identicon.data_url_for name, 128, [255, 255, 255]
    end

  end
end

根据this SO answer代码应声明为初始化程序。但是我想要一个经典模型,因为我想添加很多。

1 个答案:

答案 0 :(得分:3)

这就是我现在正在做的事情,无论如何还在继续发展,所以如果我发现问题,我会更新。

我使用ActiveRecord执行此操作,也许对于Mongoid / Mongomapper,需要进行一些更改。

幸运的是Doorkeeper::Application具有设置正确表名的所有配置,因此您不必为此烦恼。

考虑到这一点,你可以像这样添加app/models/application.rb

class Application < Doorkeeper::Application
  require 'identicon'
  before_create :generate_identicon

  def generate_identicon
    self.identicon = Identicon.data_url_for name, 128, [255, 255, 255]
  end
end

你已经完成了。

我使用它来自定义Doorkeepe :: Application with RailsAdmin(只是为了添加一些关键字,如果有人在这里登陆)