我正在构建一个基于日历和(具有日历预期的基本功能)的应用程序。
由于日历将成为应用程序的一个基本部分,我不想依赖任何 gem,而是自己构建日历。
我不知道该走哪条路线:拥有一个代表每一天的日模型,并带有唯一的记录(事件可以通过 day_id 引用)或基于 Date 类“即时”呈现日历(然后事件将参考日期)。
简而言之:哪种模型设计最有效地呈现日历?
我正在构建一个基于日历和(具有日历预期的基本功能)的应用程序。
由于日历将成为应用程序的一个基本部分,我不想依赖任何 gem,而是自己构建日历。
我不知道该走哪条路线:拥有一个代表每一天的日模型,并带有唯一的记录(事件可以通过 day_id 引用)或基于 Date 类“即时”呈现日历(然后事件将参考日期)。
简而言之:哪种模型设计最有效地呈现日历?
你根本不需要模型。下面的代码可以解决问题。
从https://gist.github.com/RichIsOnRails/5535564获取代码并将其放入帮助程序中,像这样使用(下面的haml,所以调整它以满足您自己的需要。)请注意,我正在渲染事件日历,但您不必这样做。
= calendar @date do |date|
.text-left=date.day
- if @events_by_date[date]
- @events_by_date[date].each do |event|
.event=event.title
我将在不久的将来在我的网站上写一篇文章,详细介绍这一点。祝你好运!
除非您想要建模的日期有特定的内容,否则您可能只需要一个事件模型,每个事件都有一个日期字段。这种方法更简单,我认为更可取。由于实际上有无限数量的日期,这种方法的一大优点是您不需要管理在数据库中保留有限日期子集的所有逻辑不一致。
即使您发现需要日模型,也可以在不将模型绑定到数据库的情况下执行此操作,从而避免在数据库中记录每个可能的日期。如果您想要一种方法来告诉您一天是否是工作日,或者您想要查找日期的集合,这可能会很有用。有关如何制作不需要数据库表的模型的更多信息,请参阅这个 stackoverflow 问题:Rails 3.1 中的无表模型