ここで2つの質問がされています。
最初の質問: メソッドの非推奨
この commitで変更が行われました。
create
メソッドはから削除され、という別のモジュールにActiveRecord::Base
挿入さActiveRecord::Persistence
れました。
APIDockがあなたに言ったことに関して...メソッドは「非推奨または移動」でした。候補リストの途中まで見ると、 が表示されますActiveRecord::Persistence#create
。これは、メソッドが移動した場所です。
ActiveRecord::Persistence#create
内部で使用されることに注意してください。アプリケーション コードでcreate
ActiveRecordモデル(オブジェクトではない) を呼び出すときは、 を呼び出してActiveRecord::Relation#create
います。
ActiveResource::Base#create
Rails 2.0 で導入されたもので、ActiveRecord とは無関係です。
2 番目の質問: 引数としてのハッシュ
ソースを調べるとActiveRecord::Relation#create
、次のように表示されます。
# File activerecord/lib/active_record/relation.rb, line 85
def create(*args, &block)
scoping { @klass.create(*args, &block) }
end
splat 引数を参照してください*args
。これにより、残っている引数がいくつあってもすべて に渡すように Ruby に指示しargs
ます。Ruby/Rails のダックタイピング マジックは、一連のキーと値のペアを見て、それがハッシュであると想定します。
Rails は、すべての引数を括弧で囲むことについて緩いのと同様に、引数のハッシュに中括弧を要求するという点で少し緩いです。通常、一連のキーと値のペアを渡すと、Rails はハッシュを推測します。form_for
これは、複雑なメソッドのように複数のハッシュを渡すときに問題を引き起こすことがあります。
中かっこがない場合に不安定な動作が発生する場合は、中かっこを挿入します。ハッシュを明確に定義すると、適切な動作を保証できます。
Ruby スプラットの詳細については、こちらをご覧ください。