我正在使用 Time 在我正在处理的事件控制器中保存开始和结束日期。但是,我的应用程序忽略了在浏览器和我的 Rspec 测试中的测试和开发环境中提交时间信息。似乎正在创造一个时间,但在我所有的测试中,围绕这个时间的结果始终是 2000 年 1 月 1 日凌晨 12:00。
任何人都可以帮助确定问题吗?
以下测试由于不同的原因而失败(请不要担心这一点),但它显示了问题的严重程度。测试中提交的 end_time 不是 2000 年 1 月 1 日凌晨 12:00。
失败:
1) 如果提供了结束日期/时间(可选字段),EventsController GET 在登录时显示 多日事件的显示显示结束日期
失败/错误:response.should have_selector("span", :class => "end_time_date",预期以下输出包含 2000 年 1 月 1 日星期六标签:
... [div class="start"] Starts: Saturday, 01 January 2000 at 12:00 AM [/div] [div class="end"] Ends [span class="end_time_time"] 12:00 AM [/span] [/div]
上面失败的测试:
describe "display for a multi-day event" do before(:each) do # Turn example event into one that spans multiple days. @event.end_time.advance(:days => 2) end it "shows an end date" do get :show, :id => @event @human_friendly_end_date = @event.end_time.strftime("%A, %d %B %Y") response.should have_selector("span", :class => "end_time_date", :content => @human_friendly_end_date) end it "shows an end time" do get :show, :id => @event @human_friendly_end_time = @event.end_time.strftime("%I:%M %p") response.should have_selector("span", :class => "end_time_time", :content => @human_friendly_end_time) end end
您可以在其中看到 start_time 和 end_time 属性的模型非常易于访问,并且(在此时为 start_date 的情况下)需要:
class Event < ActiveRecord::Base
belongs_to :user
attr_accessible :name, :description, :start_time, :end_time,
:max_attendees, :min_attendees, :event_type_id
validates :name, :presence => true, :length => { :minimum => 4, :maximum => 140 }
validates :description, :length => { :minimum => 4, :maximum => 1000 }
validates :start_time, :presence => true
#validates :end_time, :presence => true
validates :user_id, :presence => true
end
FactoryGirl 事件的生成似乎无关紧要,因为浏览器中也发生了同样的问题,但我也会将其包括在此处以防万一。你可以看到(从这里注释掉的位)我已经尝试硬编码数字来创建日期/时间;这并没有解决任何问题。
Factory.define :event do |event|
event.name "Foo bar"
event.description "Yada yada"
event.association :user
week_num = (rand(10) +1)
day_num = (1+rand(30))
hour_num = (1+rand(12))
hours_duration_num = (1+rand(4))
future_date = week_num.weeks.from_now
#event.start_time "2012,8,5,6"
#event.end_time "2012,8,5,7"
event.start_time "#{future_date.year},#{future_date.month},#{day_num},#{hour_num}"
event.end_time "#{future_date.year},#{future_date.month},#{day_num},#{hour_num+hours_duration_num}"
end
我的迁移:
类 CreateEvents < ActiveRecord::Migration
def self.up
create_table :events do |t| #foreign key first t.references :event_type t.integer :user_id t.string :name, :null => false t.text :description, :null => false t.time :start_time, :null => false t.time "end_time" t.timestamps end
呐呐!发生了什么事?!