2016-05-06 13 views
0

少数の行でこれを実行できますか?ActiveRecordオブジェクトを簡潔に複製して属性を変更する方法はありますか?

clone = self.dup 
clone.assign_attributes owner: owner 
clone.save 

2行でも3つより良いでしょう。

+0

読む「[尋ねる]」とそのリンクをしてください。私たちは、問題の説明と達成しようとしているものとともに、より象徴的なタイトルを見たいと思います。あなたの質問に答えるだけではなく、今後解決策を探している人たちにも同様の質問に答えるという長期的目標があります。だから、自分のためだけでなく、それらのための質問を書いてください。また、コードが動作する場合、[codereview.se]はスタックオーバーフローよりも優れたサイトです。 –

+0

@theTinManありがとう!私はコードレビューについて知らなかった、私は間違いなくそれを試してみる。質問に関して、私はより良いタイトルを持っているが、1つを思い付くことができませんでした、あなたは何か提案がありますか? – alejoriveralara

+0

コードレビューでこの質問をしないでください。それはあまりにも一般的であり、ダウン投票または閉鎖されるだろう。 –

答えて

1

私はRailsのを知らないが、私はこれがうまくいくと仮定します。

dup.tap { |clone| clone.assign_attributes(owner: owner) }.save 
3
self.class.create(attributes.merge(owner: owner)) 
+0

お金の上で右。私は 'create! 'と言うことさえしたいのですが、問題があればそれは多くのノイズを作ります。 – tadman

+0

驚くばかり!しかし、 'attributes'はどこに定義されていますか? – alejoriveralara

+0

'attributes'は' ActiveRecord :: Base'に含まれる[ActiveRecord :: Attributes](http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods.html#method-i-attributes)で定義されています。 –

関連する問題