簡體   English   中英

將Rails引擎功能限制為某個類而不是ActiveRecord :: Base

[英]Restricting Rails engine functionality to a certain class rather than ActiveRecord::Base

我創建了一個Rails引擎,其中包含創建新用戶時所需的一些常用功能。 例如,有一個before_validation(on::create)鈎子在某些字段中填充某些內容,以確保沒有該字段中包含某些內容的用戶無法創建。 它看起來類似於:

module OfflineUser 

  extend ActiveSupport::Concern

  included do
    before_validation(on: :create) do
      self.member_number = rand(0..100000)
    end
  end
end
ActiveRecord::Base.send(:include, OfflineUser)

如果我將引擎包含到另一個項目中並執行User.create,它將為我正確填充一個member_number字段。 但是,由於它已將方法添加到ActiveRecord :: Base,因此它還會嘗試在我嘗試對其運行create的每個模型中填充該字段! 如何將此功能限制為僅用戶模型或我選擇的其他模型,而不是全局限制在每個模型上。 謝謝。

通過將其包括在特定的類中:

class User < ActiveRecord::Base
  include OfflineUser
end

擺脫掉最后一行,在其中將模塊包含在ActiveRecord :: Base中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM