我正在使用Time来保存我正在处理的事件控制器中的开始和结束日期。但是,我的应用程序忽略了在测试和开发环境中提交时间信息,无论是在浏览器还是在我的Rspec测试中。时间似乎已经开始了,但是在我所有的测试中回归的是2000年1月1日上午12:00。
任何人都可以帮助找出问题吗?
以下测试由于其他原因而失败(请不要担心这一点),但它显示了问题的严重程度。测试中提交的end_time不是2000年1月1日12:00 AM。
故障:
1)如果结束日期/时间,则会在登录时显示事件控制器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
我的迁移:
class CreateEvents&lt; 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
Naaaargh!有什么用?!
答案 0 :(得分:0)
可能是由于时间字段而不是日期字段。
我会尝试改变:
t.time :start_time, :null => false
t.time "end_time"
到
t.datetime :start_time, :null => false
t.datetime :end_time