実現したい事
・関連付けたGroupモデル及びUserモデルにて、Groupモデルからuserテーブルのnameカラムを取得したいです。
現状
・上記2つのテーブルを中間テーブル(GroupUser)で関連付けました。
・コンソールにて値が渡せていることは確認済みです。
問題点
下記の様な変数とview側で配列処理を叩きましたがエラーが出ます。
controller
1 2Groupscontroller 3 4def edit 5@group = Group.where(params[:group_id] 6end
views
1edit.html.erb 2 3<% @group.group_users.each do |group_user| %> 4<%= group_user.user.name %> 5<% end %>
NoMethodError in Groups#edit Showing /app/app/views/groups/edit.html.erb where line #2 raised: undefined method `group_users' for #<Group::ActiveRecord_Relation:0x00007f08723727c0>
試した事
1.本質的に違うかもしれませんが「where」メソッドを「find」メソッドにかえ変数に代入しましたが今度は「Couldn't find Group with 'id'=」と怒られました。
2.色々と調べていくうちに外部キー(全く理解できてません)についての文献を見つけ「optional: true」を叩きましたが効果なしでした。
当該コード(rb)
user
1class User < ApplicationRecord 2 has_secure_password 3 4 has_many :groups, through: :group_users 5 has_many :group_users 6 7 before_save { self.email = email.downcase } 8 VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i 9 10 validates :name, 11 presence: true, 12 uniqueness: true, 13 length: {maximum: 16} 14 15 16 validates :email, 17 presence: true, 18 length: {maximum: 120}, 19 format: {with:VALID_EMAIL_REGEX}, 20 uniqueness: true 21 22 validates :password, 23 length: { minimum: 6} 24end
group
1class Group < ApplicationRecord 2 has_many :users, through: :group_users 3 has_many :group_users 4 has_many :post 5 6 7 validates :name, 8 presence: true, 9 uniqueness: true 10 11end
class GroupUser < ApplicationRecord belongs_to :user, optional: true belongs_to :group, optional: true end
console
1> GroupUser.all 2 GroupUser Load (9.0ms) SELECT `group_users`.* FROM `group_users` 3=> #<ActiveRecord::Relation [#<GroupUser id: 1, user_id: 6, group_id: 26, created_at: "2020-04-02 03:46:09", updated_at: "2020-04-02 03:46:09">, #<GroupUser id: 2, user_id: 6, group_id: 27, created_at: "2020-04-02 04:52:21", updated_at: "2020-04-02 04:52:21">]> 4irb(main):002:0> 5
お聞きしたい事
1 当該「Nomethod」エラーがなぜ発生するのか。
2 また「find]メソッドにて値を取得しようとした際はなぜ「Couldn't find Group with 'id'=」と怒られてしまうのか。
お手数ですが頭打ちの状態ですのでご教授頂ければ幸いです。
上記コード外に問題がありそうならば迅速に当該コードを貼り付けさせて頂きますので宜しくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/03 09:46