2011-04-22 102 views
1

我有一個名爲start_date的Time屬性模型。當我創建我的控制器一個新的對象和初始化的時間值,對象看起來是正確創建,當我在調試器中查看它...Rails 3:爲什麼我的Time屬性不能正確保存到數據庫?

(rdb:75) p @tourney 
#<Tournament id: nil, created_at: nil, updated_at: nil, start_date: "2011-04-22 20:05:00", duration_in_mins: 30, winners_name: nil> 

之後卻一直保存到數據庫中,start_date價值是錯誤的,被設置爲默認值....

#<Tournament id: 5, created_at: "2011-04-22 20:07:56", updated_at: "2011-04-22 20:07:56", start_date: "2000-01-01 01:05:00", duration_in_mins: 30, winners_name: nil> 

這裏是我的控制器代碼...

def create 

    @tourney = Tournament.new(params[:tournament]) 
    @tourney.start_date = Time.new(params[:date][:year], 
         params[:date][:month], 
         params[:date][:day], 
         params[:date][:hour], 
         params[:date][:minute]) 

    debugger 
    if @tourney.save 
     redirect_to dashboard_path, :notice => "Tournament Created Successfully" 
    else 
     redirect_to dashboard_path, :notice => "Tournament Creation Failed" 
    end 

    end 

非常感謝你的智慧!

我的模型代碼...

# Table name: tournaments 
# 
# id    :integer   not null, primary key 
# created_at  :datetime 
# updated_at  :datetime 
# start_date  :time 
# duration_in_mins :integer 
# winners_name  :string(255) 
# 

class Tournament < ActiveRecord::Base 

    has_many :participants, :dependent => :destroy 

    attr_accessible :start_date, :duration_in_mins 

    validates :start_date, :presence => true 

end 
+0

顯示型號代碼 – fl00r 2011-04-22 20:19:05

+0

型號代碼,如您要求 – BeachRunnerFred 2011-04-22 20:44:18

+0

謝謝。如果要存儲日期,則應該將start_time存儲爲'datetime'字段 – fl00r 2011-04-22 21:03:52

回答

2

好。我知道了。

你已經得到

start_date  :time 

但你應該把它保存爲一個DateTime。因此,只有時間沒有日期存儲!

加上時間保存與默認偏移量(+0000),而不是在您的本地時區。

+0

api文檔顯示時間類有一個日期組件,http://www.ruby-doc.org/core/classes/Time。 html – BeachRunnerFred 2011-04-22 21:13:36

+0

數據庫沒有,存儲Ruby對象但是它自己的類型 – fl00r 2011-04-22 21:17:45

+0

謝謝,我不知道! – BeachRunnerFred 2011-04-22 21:23:29

0

三件事:

1)看來,你沒有attr_accessible任何地方,但請記住,它可能導致此。

2)嘗試保存並保存!而不是保存。這將顯式地呈現可能的模型驗證錯誤。大多數時候,模型沒有保存時​​,這是因爲存在驗證錯誤。

3)在你的情況,我還要檢查什麼Time.new(PARAMS [:賽] ...被評估爲,可能是使用Rails控制檯

+0

1)我更新了模型以指定可訪問的屬性,2)我嘗試使用save !, 3)您的意思是'Tournament.new(PARAMS [:比賽])'? 再次感謝! – BeachRunnerFred 2011-04-22 21:09:36

+0

3)其實我的意思是在你的視圖中打印出@ tourney.start_date,看看它真的是一個有效的時間。 – Spyros 2011-04-22 21:33:27

0

你需要的attr_accessible:在您的START_TIME模型?

+0

好吧,如果他沒有它的任何屬性,它不能真正導致問題 – Spyros 2011-04-22 20:52:59

相關問題