問題
何をどうやって調べてよいか分からず実装方法が全くわからない、、、、
実現したいこと
###### 特定のユーザにだけ記事表示機能を実装したいです。
そのために、
userモデル (記事を投稿するユーザーのモデル)
groupeモデル(記事のモデル)
を作成し、中間テーブルとしてconectモデルを作成しました。
User | Groupe | Conect |
---|---|---|
name: string | name: string | user_id |
- | - | groupe_id |
そして下記のように、
throughを使用して多対多の関連付けをしました。
##models/user.rb
class User < ApplicationRecord #groupe_userを通してたくさんのgroupeを持っている has_many :groupes, through: :conects has_many :groupe_users end
##models/groupe.rb
class Groupe < ApplicationRecord #groupe_userを通してたくさんのUserを持っている has_many :users, through: :conects has_many :groupe_users end
##models/conect.rb
class Conect < ApplicationRecord belongs_to :user belongs_to :group end
なにが分からないのか
実現したいことをするために、記事投稿時に、userを選択して中間テーブルにgroupe(記事)のidとuserのidを登録する必要があるかと思ったのですが方法が分かりませんでした。
まずuser_idを複数submitとするために、check_boxを配置したいのですが、分かりませんでした。
次が、user_idを複数取得した前提で中間テーブルに登録する方法が分かりません。
##views/groupes/new.html.erb
<h1>Groupes#new</h1> <%= form_for(@groupe, url: groupes_create_path) do |f| %> <%= f.text_field :title %><br> <%= f.text_area :name %><br> <%=f.fields_for :conects do |i| %> <% @user.each do |g| %> <%= i.check_box :user_id %> <%= g.name %> <%= g.id %> <% end %> <%end%> <br><%= f.submit %> <% end %>
##controllers/groupes_controller.rb
class GroupesController < ApplicationController def new @groupe = Groupe.new() @user = User.all end def create @groupe = Groupe.new(groupe_params) if @groupe.save redirect_to '/groupes/index' else render :new end end def index @groupe = Groupe.all end private def groupe_params params.require(:groupe).permit(:name,:title) end end
# 分からないことばかりで申し訳ございません。 分かる方お見えでしたらご教授下さい、、、
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/02 14:44
2019/07/03 03:29