2011-06-18 7 views
1

プロフィール写真をアップロードするためのレール3アプリでキャリアウェーブ宝石を使用しています。ユーザーのホームページには、プロフィール画像を変更するためのリンクがあります。1件の結果が見つかりましたが、2件を探していました

@profile_picture = ProfilePicture.find("user_id = ?", current_user.id) 

    # if no profile picture record, create one 
    if @profile_picture.empty? 
    ProfilePicture.create(:picture => "", :user_id => current_user.id) 
    end 

私は、次のエラーを取得しています:私はUSERHOMEコントローラで、次のしているプロフィール画像レコードのIDを取得するには

は、このエラーの前にしてウェブ検索を見ていない

Couldn't find all ProfilePictures with IDs (user_id = ?, 1) (found 1 results, but was looking for 2) 
有用なものは何も生み出さなかった。

ありがとうございました。

+0

あなたのエラーはあなたの最初の 'find'上の誤りが原因であります私はあなたが1行に投稿したすべてを行う方法を示しました。 – sscirrus

答えて

3

あなたはそのすべてを達成する(そして、あなたのエラーを修正する)ことができます1行で:

@profile_picture = ProfilePicture.find_or_create_by_user_id(:user_id => current_user.id, :picture => "") 
+0

これは間違いなく道のりですが、ここにはエラーがあると思います。 find_or_create_by_user_idメソッドは2つの引数をとる必要があります。ユーザーIDを最初に、他の属性のオプションのハッシュを2番目に指定します。f_o_c_b_u_i(current_user.id、:picture => "") –

+0

@RobDavis - 両方の方法で動作します。 – sscirrus

+0

ああそうです。クール。 –

0

私はRoRのには非常に新しいですが、私は思っていたことができますユーザーProfilePicture.find_by_owner(owner_id) または

ProfilePicture.find_by_sql("SELECT * FROM ProfilePicture WHERE owner.id = current_user.id") 

知らん、ちょうど私の2セントを投げる(とRuby on Railsでの学習しようとしている)

場合

--EDIT--

ところで、私はthis postが役に立ちます。

2

findメソッドは、SQLスニペットではなく、idsのリストを取ります。あなたは2つの引数を渡し、両方のIDであると仮定しました。それは何も見つかりませんでした。代わりに、私はあなたがこれをしたいと思う:

@profile_picture = ProfilePicture.find_by_user_id(current_user.id) 
関連する問題