我目前正在开发一种产品,在某些原因下,我们决定销毁特定表中的email
列,然后使用活动记录委托方法将该列委托给关联的表
https://apidock.com/rails/Module/delegate
我在这里的问题是要确保采用email
列的所有where子句也都得到委派的遵循的方法是什么。因为基本上需要很多时间来检查我们使用过table.where(dropped_column: value
)的所有地方
示例
class Station < activeRecord::Base
has_one :contact
delegate :email,to: :contact
end
class Contact < activeRecord::Base
belongs_to :station
end
我知道可以将所有查询从Station.where(email: value)
切换到Station.joins(:contact).where('contacts.email': value)
,但是这种方法将花费很长时间,而且where
子句可以用许多不同的方式编写,因此搜索在整个代码源中进行更新,并不足以覆盖所有情况。
如果有人遇到类似情况并设法解决,从而节省了我们的时间和错误,那么我将很高兴听到您采取什么方法。
谢谢。
轨道版本:“ 5.2.3”