###前提・実現したいこと
railsでユーザーがツイッターのようにタイムラインに投稿できるものを作っています。さらに、ユーザーがグループを作り、そのグループページでメンバーの投稿を表示したいです。
アソシエーションは以下のように組んでいます。
Groups
has_many :user_groups
has_many :users, through: :user_groups
Users
has_many :reviews
has_many :user_groups
has_many :groups, through: :user_groups
UserGroups
belongs_to :user
belongs_to :group
Reviews(投稿)
belongs_to :user
UsersとGroupsが多対多の関係になっており、中間テーブル(UserGroups)でつないでいます。
ユーザーが所属しているグループ一覧をこのように表示させています。
例)
・太郎グループ
・花子グループ
そしてグループ名をクリックするとグループページに飛ぶようになっています。
UserGroupsテーブルのカラムは
id | user_id | group_id
の3つです。
####ここに質問したいことを詳細に書いてください
@group = Group.find(params[:id]).id
ここでクリックしたグループのidを取得できていると思います。
仮に1とします。
@users = UserGroup.where(group_id: @group)
そしてここでgroup_idカラムにクリックしたグループのid(ここでは1)を持つレコードを取得
@reviews = @users.user_id.reviews
group_idカラムに1をもったすべてのuser_idを取得し、そのuserがもっているreview(投稿)をとる
こういうつもりでコードを書いているのですがうまくいきません。
つたない説明ですが、回答していただけると幸いです。
###発生している問題・エラーメッセージ
undefined method `user_id'というエラーメッセージが出ます。
###該当のソースコード
@group = Group.find(params[:id]).id #クリックしたグループのid取得 @users = UserGroup.where(group_id: @group)#クリックしたグループのidを持つレコードを取得 @reviews = @users.user_id.reviews
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
ruby
rails 4.2.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/07 13:35 編集
2016/11/07 13:40
2016/11/07 22:15
2016/11/08 04:28
2016/11/08 05:23