レッツモデルを使用して別のオブジェクトから属性をコピーする[price, description]
はのRails:「属性」メソッドの属性を持っている<code>Quote</code>
[price, description, priority]
を属性を持つInvoice
レッツモデルはinvoice
属性を持つモデルInvoice
からオブジェクトをしてみましょう{price: 10, description: 'lamp', priority: 10}
invoice = {price: 10, description: 'lamp', priority: 10}
たとえば、invoice
の属性を新しいにコピーしたいとします。
quote = Quote.new(invoice.attributes)
これはpriority
は、モデルQuote
にexisteしないこと、エラーが発生します。
属性quote
にはinvoice
の属性をコピーできますが、quote
の属性は受け入れることができますか?
すべて 'attribute_names'はかかわらず、コピーする必要がありません。 'id'、' updated_at'と 'created_at'はインスタンス化時にはおそらく' nil'でなければなりません。 – Mischa
配列だけを渡すと{}が返されます。 Quote.new(invoice.attributes.slice(* Quote.attribute_names)) – Ajay
@ajayこんにちは、あなたの答えは本当に役に立ちます。複数の属性を追加する場合と同じシナリオがあります。そこで私は '未定義のメソッド属性'というエラーを受け取りました。どうすれば修正できますか?ありがとう – Learner