当我正在阅读rails 3时,我想制作一个小应用程序,这将帮助我学习本书。我想在rails中制作一个简单的时间表应用程序,但是,就日历功能而言,我无法弄清楚从哪里开始。这就是我到目前为止所拥有的。
User has_many Timesheets
Timesheet belongs_to user
时间表将包含date:datetime
,hours:datetime
和comments:string
属性。
如何将整月映射到时间表?
例如。
如果用户想填写06/01/2011 - 06/07/2011
的时间表,他会在Timesheet表中有七行吗?
我希望有人为此解释ActiveRecord的简短架构。
答案 0 :(得分:2)
我至少会从这样的事情开始:
class User < ActiveRecord::Base
has_many :timesheets
end
class Timesheet < ActiveRecord::Base
belongs_to :user
has_many :work_days
end
class WorkDay < ActiveRecord::Base
belongs_to :timesheet
end
Timesheet
将具有user_id:integer
属性。
WorkDay
将拥有day:date
,hours:integer
,comment:text
和timesheet_id:integer
属性。
然后,您可以创建任何您希望的个人工作日集合的时间表。
WorkDay的表单可能如下所示:
<%= form_for @work_day do |f| %>
<%= f.label(:timesheet, 'Timesheet') %>:
<%= f.collection_select(:timesheet_id, Timesheet.all, :id, :name) %><br />
<%= f.label :day, 'Date' %>:
<%= f.date_select :day %><br />
<%= f.label :hours, 'Hours worked' %>:
<%= f.text_field :hours %><br />
<%= f.label :comment, 'Comments' %>:
<%= f.text_area :comment %><br />
<% end %>
这将允许您创建一个包含其所有属性的新WorkDay,并将其附加到任何现有的时间表。
注意:这将在Timesheet中查找name
方法,您可以像这样实现,例如:
def name
"Timesheet ##{self.id}"
end