2017-12-15 35 views
0

は、私はこれが[#<User id: 15, name: "Shruthi", ...>]のようなリストを返してUser.where("id = #{current_user.id}").include_associations.order(created_at: :desc)Rails 5 - どのようにアレイからactiverecordの関係に変換するのですか?レール5に

のようなクエリを書かれています。

ここではアクティブレコードデータのみを取得するにはどうすればいいですか(配列は必須ではありません)? リストを希望します#<User id: 15, name: "Shruthi", ...>

+1

'0以上の結果は' .where'条件付き一般的には可能であるため、結果のコレクションを表す関係を返し.where'。 activerecordインスタンスは1つの結果に過ぎません。あなたは何をしたいですか? 'where'の最初の結果?その場合は、 'User.where(...)。first'と書くか、' .where'の代わりに '.find'を使います。 – lurker

+0

一度に複数のActiveRecordを1つずつ使用する場合は、 '.order(...)'ステートメントの後に '.each 'を使用してください。 – lurker

答えて

1

を反復処理する必要があり、その後、同様のリストをしたいとあなたが設定しました'has_many'は正しく行うことができます...

current_user.associations.order(created_at: :desc) 

すべてのアソシエーションのレコード、そして当然、idnameのようなcurrent_user情報は、現在のユーザーから直接入手できます。

これはActiveRecord :: Relationとなり、それを反復処理できるので、配列のように動作します。すべてのリストが必要な場合は、配列または配列のような構造が必要です。ここ

0

2つのオプションがあります。

  1. .firstをクエリに追加します。

  2. 使用User.find(current_user.id)...

+0

私はすべてのリストが単一の行ではないことを望みます。 –

+1

@ ShruthiRリストのすべてを単一のActiveRecordとして表すことはできません。元の質問は不明です。 – lurker

+0

配列ではないリストは取得できません。複数のレコードが必要な場合は、レコードの配列がそこにあります。 –

0

あなたはあなただけの現在のユーザーの関連付けをしたい場合は、アレイ

users = User.where("id = #{current_user.id}").include_associations.order(created_at: :desc) 
users.each do |user| 
    #user is activerecord data here 
end 
0

はあなたのための代替手段は、一例である -

user_array = User.where("id = #{current_user.id}").include_associations.order(created_at: :desc) 
active_record_of_users = User.where(id: user_array.map(&:id)) 
関連する問題