2012-02-21 12 views
0

私はレールを使い慣れています。これまでのところ私は好きですが、いくつかの問題があります(PHPで動作するコードロジックですが、Railsの仕組みはわかりません)。例えばRails 3:Chaining Saveメソッド

:スローされたエラーは、未定義のメソッドである

u = User.first 
u.age +=1 
u.save 

動作しますが、私はそれをチェーン場合、それは

u = User.first 
u.age+=1.save 

エラーがスロー1は '保存':Fixnumか

助けていただければ幸いです。ありがとう

答えて

1

。これを行うには、私は短いで、Railsは本当に連鎖をサポートしていないので?ええ、私は、あまりにもそう考え出しupdate_attribute

u.update_attribute(:age, u.age+1)

1

u.age += 1は、saveメソッドを持たない整数を返します。あなたはそれが必ずしも属性を更新し、その後、保存するための最良の方法ではありませんが、あなたのようなこの

u.tap { u.age += 1 }.save

を探している連鎖を達成することができます

+0

を使用しますか – Henson

+0

必要なチェーンの種類によって異なります。これは有効なケースではありません: "。string" .strip.lengthやUser.where(:age => 20).lastのようなものが有効です。 – wanghq

関連する問題