我发现自己开始利用检查持久性来让我的模型“工作”。包含持久性检查似乎是方便和正确的。另一方面,它感觉有点阴暗,好像我过于谨慎或以小的方式打破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
在这种情况下,我需要告诉我,如果装运是可交付的方法。这是真实的,当它有效,保存到数据库,并有地址保存。
另一个例子可能是在回调中使用它来确定某些事情(价格重新计算)是否需要发生。
意见?这是不必要的,偏执的还是安全的,正确的?