if it does't challenge you, it can't change you

RubyのWebエンジニアやってます。主にRuby on Railsのことで勉強になったこと書いていきます。

ActiveRecordでsaveメソッドの表記

疑問点  

何か新しいレコードを作りたい時、同時に違うテーブルにもレコード作りたい時に下記のようにコントローラーに書けば登録できるが、きたない。

condition = Condition.new
condition.student_id = @student.id
condition.progress = 0
condition.date = Date.today
condition.comment = "Account created"
condition.save

これをハッシュみたいにして綺麗にかけないの?
下のようにハッシュで書いても入力されない。

 condition.save({
    "student_id"=>"#{@student.id}",
     "progress"=>"0",
    "date"=>"#{Date.today}",
    "comment"=>"Account created",
    "username"=>"#{current_user.username}"
})

解決策

これはrails5からstrong_paramsからでないとレコードにsaveできなくなったらしい。 上記は初期値を設定したかったから、アソシエーションを使って、

condition = @studnet.conditions.new
condition.save

これでstudentに紐づいた新しいレコード作成し、 DBのカラムにdefaultオプションを使って初期値を設定することで解決。 ただ、レコードを一から作る羽目に。涙