0

検証がまったく行われていないフィールドで、非常に単純な更新を実行しようとしています。ただし、更新は常に失敗します。コードは次のようになります。

# model
class Event < ActiveRecord::Base

  attr_accessible :start_time

  ..

end

# migration
class CreateEvents < ActiveRecord::Migration
  def change
    t.datetime :start_time
  end
end

# console
Event.first.update_attribute(:start_time, "02:00")

Railsログで実行されたクエリには、start_time属性すら含まれていません。

(0.2ms)BEGIN

(4.5ms)UPDATE eventsSET updated_at= '2012-07-24 19:51:33'、repeat_days='--- \ n- wed \ n- sat \ n- sun \ n'、 event_date_list='--- [] \ n \n'WHERE eventsid= 3763

(5.5ms)コミット

私はこれを理解し始めることができません。誰かがこの問題の根本的な原因を理解するのを手伝ってもらえますか?

4

1 に答える 1

2

Date、Time、または Datetime オブジェクトではなく、文字列を渡します。

添付された日付ではなく、時間を保存したいだけのようです。しかし、日付も添付するつもりだったのかもしれません。日付も保存したい場合は、Datetime クラスを調べてください。

時間 (時、分、秒) だけを保存する場合は、start_timeフィールドを整数に変更し、秒を保存することをお勧めします:2.hoursまたは2.hours + 4.minutes + 6.seconds.

それを簡単に時間に変換できます。

于 2012-07-24T20:00:49.320 に答える