【发布时间】:2022-11-18 03:26:01
【问题描述】:
我不喜欢传递多个重复的参数,它看起来有点难看。
我该如何重构以下代码?
prev_month_start = Date.today.prev_month.beginning_of_month
prev_month_end = Date.today.prev_month.end_of_month
contacts = contacts.where('
persons.actual_delivery_date >= ? AND persons.actual_delivery_date <= ? OR
persons.expected_shipment_date >= ? AND persons.expected_shipment_date <= ?',
prev_month_start, prev_month_end,
prev_month_start, prev_month_end)
【问题讨论】:
-
这里重构的最终目标是什么?有很多方法可以考虑重构它,但我可能会从有意义的范围开始(例如,
delivered_last_month和shipment_expected_last_month等)。 -
contacts是怎么组成的?Person是生成contacts变量的模型吗?就像contacts = Person.all。还是persons表是联合表?例如。contracts = Contract.all.joins(:person)。您能否为我们提供更多背景信息?persons表与contacts范围有什么关系?
标签: ruby-on-rails ruby