2016-12-19 84 views
0

當用戶創建帳戶時,必須將當前日期時間發送到數據庫。我有一個例如「a_started_at」的列。Ruby on Rails - 如何將當前日期時間保存到數據庫?

控制器:

def create 
....... 
    if @user.save 
    @current_Time = DateTime.now 
    @current_Time = current_time.strftime("%Y/%m/%d %H:%M") 
    end 
....... 
end 

對於用戶PARAMS我把它的「company_attributes」

company_attributes[a_started_at => @current_Time] 
+0

是什麼問題? –

+0

如何將當前日期時間保存到我的數據庫?這對我不起作用.. – MrN2017

+0

是你看到一個錯誤還是運行良好,但只是沒有做任何事情? –

回答

0

(發佈代表OP)的

我剛剛在創建方法中做了users.company.started_at = DateTime.now,它工作正常。

0

中,您可能想利用ActiveRecord::Timestamp優勢:如果有一列created_at數據庫表,那麼當創建一個新行時,Rails會自動將當前時間保存到該列中。

要手動設置日期時間列,當用戶註冊,你有兩個選擇取決於您希望如何明確您的started_at時間字段是:

1)隨着模型的回調:

# in models/user.rb 
before_validate :set_started_at 

private 
    def set_started_at 
    self.started_at ||= Time.current 
    end 

2)通過在控制器創建用戶時,提供更多的屬性:

# in your controller: 
@user = User.new(user_attributes.merge(started_at: Time.current)) 
if @user.save 
    # ... 
+0

是的,我也是,但是當用戶提交時,我需要第二欄的日期完全相同。 – MrN2017

+0

爲什麼你需要兩個完全相同的值不同的列? – spickermann

+0

那麼我們有一個「started_at」和一個「ended_at」。我需要它來計算訂閱。而當用戶購買新的訂閱時,「started_at」的值可以稍後改變。 – MrN2017

相關問題