我正在编写一个应用程序,它将广泛使用日历来存储每个实体的各种事物的日常信息。现在,我如何为每个实体制作新日历。我是否为用户表中的每个条目创建了一个表?
我有一个实体用户。 现在每个实体都有一整年的日历。对于一年中的每一天,有2个字段将有一些数据。
现在我该怎么做?我应该为每个用户创建一个新表吗?或者我应该只使用用户的外键,并在每个用户的日历表中有365个条目。
每个用户每天只有一个活动。 因为事件发生在用户的某个项目上,并且用户有很多项目,所以一个用户可以有多个日历。
答案 0 :(得分:1)
修改强>
我认为tester123对你的问题有一个很好的答案。
class User < ActiveRecord::Base
has_one :calendar
has_many :calendar_events, :through => :calendar
end
class Calendar < ActiveRecord::Base
belongs_to :user
has_many :calendar_events
end
class CalendarEvent < ActiveRecord::Base
belongs_to :calendar
end
在这种情况下,您有一个表users
,每个用户在表calendars
中都有自己的日历条目。用户还可以拥有0个或更多calendar_events
。日历活动有一列event_date
(您正在谈论的一年中的某一天)和两个包含“某些数据”的字段。
答案 1 :(得分:1)
您将拥有一个用户表和一个日历表。这就是我要开始的:
class User < ActiveRecord::Base
has_one :calendar
end
class Calendar < ActiveRecord::Base
belongs_to :user
has_many :calendar_events
end
class CalendarEvent < ActiveRecord::Base
belongs_to :calendar
end
然后你可以这样做:
User.calendar.calendar_events #returns array of active record CalendarEvent objects
User.calendar.calendar_events.where(:start_date => Date.today) #assuming you have a start date field
当您在一个看起来像日历的网格中渲染事件时,这些模型将只是一个真实的日历。