###知りたいこと
グループに共有した投稿を、グループ内メンバーは閲覧できるif文の条件分岐。
全ての投稿は自分以外閲覧不可です。
しかし、グループ内に投稿が共有された場合、グループ内メンバーは閲覧できるようにしたいです。
post/show
view
1<div class="container"> 2 <% if @user.id == @current_user.id %> 3 <p>あなたは閲覧出来ます!</p> 4 <% else %> 5 <p>あなたは閲覧出来ません</p> 6</div>
###コード
Model
1class Group < ApplicationRecord 2 has_many :group_users, dependent: :delete_all 3 has_many :group_posts, dependent: :delete_all 4 has_many :users, through: :group_users 5 has_many :posts, through: :group_posts
Model
1class GroupUser < ApplicationRecord 2 belongs_to :group 3 belongs_to :user 4end
Model
1class GroupPost < ApplicationRecord 2 belongs_to :group 3 belongs_to :post 4end
Controller
1class PostsController < ApplicationController 2 def show 3 @post = Post.find_by(id: params[:id]) 4 @user = @post.user 5 end 6end
###考えている事
group_postsで、投稿がどこかのグループに所属しているか?そのgroup_idは?
group_usersで、閲覧ユーザーはどこかグループに所属しているか?そのgroup_idは?
そして、if文で、上記2つがマッチしているか?という条件分岐?
あるいは、include?などを使う方法もあるのかな?とも考えています。
現在、答えにたどり着けずにいます。
お分かりの方、ぜひ宜しくお願いします。
###追記
現在のエラーです。
group_post_ids に変更した場合エラーは無くなりますが、if分の条件に該当せず閲覧出来ません。
###追記2
schema
1 create_table "group_posts", force: :cascade do |t| 2 t.integer "group_id" 3 t.integer "post_id" 4 t.datetime "created_at", null: false 5 t.datetime "updated_at", null: false 6 t.index ["group_id"], name: "index_group_posts_on_group_id" 7 t.index ["post_id"], name: "index_group_posts_on_post_id" 8 end 9 10 create_table "group_users", force: :cascade do |t| 11 t.integer "group_id" 12 t.integer "user_id" 13 t.datetime "created_at", null: false 14 t.datetime "updated_at", null: false 15 t.index ["group_id"], name: "index_group_users_on_group_id" 16 t.index ["user_id"], name: "index_group_users_on_user_id" 17 end 18 19 create_table "groups", force: :cascade do |t| 20 t.string "name" 21 t.text "content" 22 t.datetime "created_at", null: false 23 t.datetime "updated_at", null: false 24 end 25create_table "posts", force: :cascade do |t| 26 t.text "content" 27 t.datetime "created_at", null: false 28 t.datetime "updated_at", null: false 29 t.integer "user_id" 30 t.string "image_name" 31 t.string "title" 32 end
Model
1class User < ApplicationRecord 2 has_many :posts, dependent: :delete_all 3 has_many :group_users 4 has_many :groups, through: :group_users
Model
1class Post < ApplicationRecord 2 belongs_to :user 3 has_many :group_posts, dependent: :delete_all
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/10 05:48
2020/07/10 07:23
2020/07/10 07:37
2020/07/10 07:38
2020/07/10 07:39
2020/07/10 07:47
2020/07/10 08:31
2020/07/10 08:53
2020/07/10 09:38
2020/07/11 09:48