【发布时间】:2020-04-22 14:33:34
【问题描述】:
我目前正在开发一种产品,出于某些原因,我们决定从特定表中销毁 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 子句可以用多种不同的方式编写,因此搜索代码源并更新所有这些都不足以覆盖所有情况。
如果有人遇到类似情况并设法以节省我们时间和错误的方式解决问题,我将很高兴听到您采用的方法。
谢谢。
Rails 版本:'5.2.3'
【问题讨论】:
标签: ruby-on-rails ruby activerecord rails-migrations ruby-on-rails-5.2