[英]Ruby on Rails: Update to a gem clobbering my model's pre-existing attribute, options?
我一直在使用的gem在模型中添加了方法。 最近,它更新了其方法名稱,以使方法名稱之一現在與我模型的預先存在的數據庫屬性之一相同。
除了重命名數據庫中的列並更新我的所有代碼之外,是否有其他解決方法,如果我希望保持最新狀態,可以使用gem?
為了使它更具體,如果有用,gem是PaperTrail,它會向模型添加版本跟蹤。 我的模型在數據庫中有一個預先存在的屬性,稱為version_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.