簡體   English   中英

Ruby on Rails:更新為破壞我模型的現有屬性的寶石嗎?

[英]Ruby on Rails: Update to a gem clobbering my model's pre-existing attribute, options?

我一直在使用的gem在模型中添加了方法。 最近,它更新了其方法名稱,以使方法名稱之一現在與我模型的預先存在的數據庫屬性之一相同。

除了重命名數據庫中的列並更新我的所有代碼之外,是否有其他解決方法,如果我希望保持最新狀態,可以使用gem?

為了使它更具體,如果有用,gem是PaperTrail,它會向模型添加版本跟蹤。 我的模型在數據庫中有一個預先存在的屬性,稱為ve​​rsion_name,該屬性剛剛被添加為PaperTrail的最新版本,作為class_attribute version_name,供PaperTrail用來定義另一種方法的名稱。

對PaperTrail不太熟悉(盡管我一直想研究它)。 假設PaperTrail沒有配置選項來更改* version_name *的名稱,那么您可能會在模型中以這種方式解決它:

class Thingy
  def version_name_attr
    attributes['version_name']
  end

  def version_name_attr=(val)
    attributes['version_name'] = val
  end
end

每當您要訪問屬性時,只需使用* version_name_attr *;在需要PaperTrail方法時,請使用* verson_name *。

像這樣的東西更干凈一些 ,但是如果PaperTrail內部使用* version_name *,可能會破壞事情。

class Thingy
  alias_method :paper_trail_version_name, :version_name
  def version_name
    attributes['version_name']
  end
end

在這種情況下,當需要PaperTrail方法時,請使用* paper_trail_version_name *。 對屬性的訪問將保持您期望的狀態。

暫無
暫無

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

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