【发布时间】:2014-03-25 17:01:15
【问题描述】:
我一直在努力寻找一种方法来重构这个丑陋的控制器
def video_games
@video_games_released = Item.video_games.released.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
@video_games_coming_soon = Item.video_games.coming_soon.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
@video_games_unknown = Item.video_games.unknown.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
end
def movies
@movies_coming_soon = Item.movies.coming_soon.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
@movies_released = Item.movies.released.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
@movies_unknown = Item.movies.unknown.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
end
def tv
@tv_coming_soon = Item.tv.coming_soon.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
@tv_released = Item.tv.released.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
@tv_unknown = Item.tv.unknown.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
end
我想摆脱重复,尤其是我的 group_by 方法
我已经尝试进入模型并创建一个方法
def group_by_month
self.group_by {
|item| [item.release_date.try(:strftime, "%B %d, %Y"), item.time_diff_components].join()
}
end
我尝试过确定它的范围,但似乎没有任何效果
我不是 Rails 专家,我真的很想学习如何重构代码并保持干货
【问题讨论】:
标签: ruby-on-rails refactoring dry