我目前正在干涸初始冗长的代码:重构模型:出了什么问题?
def planting_dates_not_nil?
!plant_out_week_min.blank? || !plant_out_week_max.blank? || !sow_out_week_min.blank? || !sow_out_week_max.blank?
end
def needs_planting?(week)
if !plant_out_week_min.blank? && !plant_out_week_max.blank?
(plant_out_week_min..plant_out_week_max).include? (week)
end
end
def needs_sowing?(week)
if !sow_out_week_min.blank? && !sow_out_week_max.blank?
(sow_out_week_min..sow_out_week_max).include? (week)
end
end
def needs_harvesting?(week)
if !harvest_week_min.blank? && !harvest_week_max.blank?
(harvest_week_min..harvest_week_max).include? (week)
end
end
这里是我的INTIAL尝试:
def tasks_for_week(week,*task_names)
task_names.each do |task_name|
to_do_this_week = []
unless read_attribute(task_name).nil?
if (read_attribute("#{task_name}_week_min")..read_attribute("#{task_name}_week_max")).include? (week)
to_do_this_week << task_name
end
end
end
end
然而,当我在控制台中运行该代码如下:
p.tasks_for_week(Date.today.cweek, :plant_out, :sow_out])
我得到了意想不到的结果...即使植物不需要种植,我仍然得到两个返回的任务名称数组([:plant_out,:sow_out]
任何人都可以让我知道如何清理这个问题,并有taskweweek方法返回预期的结果吗?
TIA
再次感谢Squeegy花时间重新构造这么充分。真的帮助我了解基础知识。 我假设我可以使用select来代替find_all。 – 2009-02-15 14:45:42