私は、ある時間から更新されなかったレコードを削除するクラスを構築しています。たとえば、過去8か月間に更新されなかったすべてのレコードを削除する必要があります。ここにevalの使用が必要ですか?
class ConnectionsCleanerWorker
include Sidekiq::Worker
sidekiq_options queue: :connections_cleaner, retry: false
def perform
months = Figaro.env.connection_updated_months_ago
Connection.where('updated_at < ?', eval("#{months}.months.ago")).destroy_all
end
end
それが正常に動作しますが、eval
を使用せずにこのコードを書くためのどのような方法がある場合、私は思ったんだけど:私はこのようになりますワーカークラスを持っています。
'Connection.where( 'updated_at <?'、months.months.ago).destroy_all' - これは正常に動作するはずです。しかし、月間はどうなるのでしょうか? – dp7
なぜ最初にevalを使用していますか? – max
@max、補間 '#{months} .months.ago'と仮定します。 – Uzbekjon