2016-03-21 1 views
0

私は、データベースにタイムシートを保存するレール上のルビーに残りのAPIを書いています。タイムシートを保存する前に、タイムシートの時刻プロパティを現在の時刻Time.nowに設定しようとしています。ただし、時刻は常にnullに設定されます。私は端子を介してテストしていると私は、常に時間に戻ってJSONを取得インスタンス変数にプロパティを追加するRuby on Rails APIが動作しませんか?

def create 
    @timesheet = Timesheet.new 
    @timesheet.assign_attributes(@json['timesheet']) 
    @timesheet.time = Time.now 
    if @timesheet.save 
     render json: @timesheet 
    else 
     render nothing: true, status: :bad_request 
    end 
    end 

は、ここに私の作成方法ではnull。助けてくれてありがとう。

編集: スキーマ

create_table "timesheets", force: :cascade do |t| 
    t.integer "employer_id" 
    t.integer "employee_id" 
    t.datetime "time" 
    t.boolean "in" 
end 
+0

スキーマからTimesheetテーブルを投稿できますか? – SomeSchmo

+0

私のスキーマを追加しました – Jared

+0

モデルの 'time'メソッドをオーバーライドすることは可能でしょうか? –

答えて

0

Railsは、すでにタイムスタンプのためのサポートが組み込まれています。それが既に存在する場合はなぜそれを複製するのですか?デフォルトでモデルを生成するとき、作成されたマイグレーションにはcreated_atupdated_atの両方の列があります。

あなたがどうなる既存のテーブルにタイムスタンプを追加するには:変更したいテーブルの名前とsomethingを置き換え

rails g migration add_timestamps_to_something created_at:datetime updated_at:datetime 
rake db:migrate 

。モデルにこれらの列がある限り、レコードを作成するときはcreated_at、レコードが更新されるときはupdated_atに設定されます(duh)。

+0

サイドノートでは、 'in'をカラム名として使用しません。これはRubyの予約語で、' self'なしでそれを呼び出すと構文エラーが発生します。ロックスターのようにしたい場合は、[enum](http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html)と一緒に 'status'という整数を使用してください。 – max

+0

移行ファイルを使用して列の名前を変更するにはどうすればよいですか? – Jared

+1

http://stackoverflow.com/questions/471416/how-do-you-write-a-migration-to-rename-an-activerecord-model-and-its-table-in-ra Googleのサービス – SirUncleCid

関連する問題