前提・実現したいこと
Ruby on railsのDeviseを用いてログイン後
family(グループのようなもの)を作成しようとするとエラーがでます。
なにをどうしたらいいか、わからない状態になってしまいましたので教えてください。
他に必要な情報がありましたら、すぐにこちらに記載いたしますので
必要であれば教えてください。
発生している問題・エラーメッセージ
NoMethodError in FamiliesController#new undefined method `users' for #<Family id: nil, created_at: nil, updated_at: nil>
該当のソースコード
Ruby
1class FamiliesController < ApplicationController 2 def new 3 @family = Family.new 4 @family.users << current_user 5 end 6 7 def create 8 end 9 10end
試したこと
https://teratail.com/questions/125888
こちらの回答の内容は全て試せる範囲で試しましたが、
できませんでした。
補足情報(FW/ツールのバージョンなど)
・Rails 5.0.7.2
・ruby 2.5.1p57
routes.rb
Ruby
1Rails.application.routes.draw do 2 devise_for :users 3 root 'records#index' 4 resources :users, only: [:edit, :update] 5 resources :families, only: [:new, :create] 6end
application_controller.rb
Ruby
1class ApplicationController < ActionController::Base 2 protect_from_forgery with: :exception 3 # before_action :authenticate_user! 4 before_action :configure_permitted_parameters, if: :devise_controller? 5 6 protected 7 8 def configure_permitted_parameters 9 devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) 10 end 11end
Familyモデル
Ruby
1class Family < ApplicationRecord 2 def change 3 create_table :families do |t| 4 has_many :family_users 5 has_many :users, through: :family_users 6 validates :name, presence: true, uniqueness: true 7 end 8 end 9end
Userモデル
Ruby
1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :validatable 6 validates :name, presence: true, uniqueness: true 7 8 has_many :family_users 9 has_many :families, through: :family_users 10end
中間モデル family_user.rb
Ruby
1class FamilyUser < ApplicationRecord 2 belongs_to :family 3 belongs_to :user 4end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。