我發現自己開始利用檢查持久性來讓我的模型「工作」。包含持久性檢查似乎是方便和正確的。另一方面,它感覺有點陰暗,好像我過於謹慎或以小的方式打破ORM抽象。正在檢查DataMapper(或其他ORM)模型是否存在代碼異味?
一個例子可能是:
class Shipment
include DataMapper:Resource
belongs_to :address, :required => false
def shippable?
valid? && persisted? && !address.nil? && address.valid? && address.persisted?
end
end
在這種情況下,我需要告訴我,如果裝運是可交付的方法。這是真實的,當它有效,保存到數據庫,並有地址保存。
另一個例子可能是在回調中使用它來確定某些事情(價格重新計算)是否需要發生。
意見?這是不必要的,偏執的還是安全的,正確的?