私は2012年6月に作成したビデオチュートリアルに従っています。Rubyバージョン1.9.3、およびRailsバージョンは当時3です。今、私はRails 5.0.0.1のコード例を試しています。Rails 5.0.0.1:コンソールからクラスインスタンスを作成できませんか?
現在、アクションではstrong parameters
を使用する必要があります。これは、コンソールを使用してクラスのインスタンスオブジェクトを作成する場合にも当てはまりますか?
練習では、モデルユーザーがrails g scaffold user name movie
によって生成されました。次の命令はrake db:migrate
(当然)でしたし、コンソールに入り、ユーザーレコードを作成します。すべてうまくいった。レコードは値を持つすべてのフィールドとともに作成され保存されます。
は、しかし、今、私の質問を約ある一部くる:次のコマンドだった:
rails g scaffold car user:belongs_to condition year:integer
。
OK;再度rake db:migrate
を開き、コンソールを開きます。これは私が車のレコードを作成したかったときに起こった:
>> car = Car.create(year: 2003, condition: 'ok')
(0.2ms) begin transaction
(0.1ms) rollback transaction
=> #<Car id: nil, user_id: nil, condition: "ok", year: 2003, created_at: nil, updated_at: nil>
レコードが作成されていません!私はそれがレール4と5のstrong parameters
と関係があると思われますか?最後に
は、ここに私の質問は以下のとおりです。
- 何が悪かったのか?コンソールを使用して作成する別の方法がありますか?
- カーモデルの関係のためです:
belongs_to :user
? - 強いパラメータが導入される前の状態を「模倣する」宝石があることは知っていますが、私はむしろこれらを使用したくありません。それは不正行為のように感じる!
車のユーザーを指定していません。 'car.errors'を調べると、なぜ保存されなかったのかがわかります。 –
@SergioTulentsev:そうです!私は '' id''と '' user_id'''を提供しました。そして今、私は新しいレコードを作成できます!ありがとうございました!私は '' id''が自動的に生成されると思ったが、明らかにこの場合はそうではない! –
さらに、存在しないユーザの '' 'user_id'''で作成することはできません! Railsには私のためにたくさんの隠された__gems__があります! –