スタック・オーバーフロー Asked by r_n06 on December 11, 2020
Ruby on RailsでLINEのグループ機能のように、グループ名の入力とメンバーをドロップダウンで選択しグループを作成する機能を実装しています。
UserモデルとGroupモデル、中間テーブルにgroup_usersを設定しています。
groupモデルとgroup_usersテーブルに作成したグループ名、user_id、group_idを保存できるように実装したいのですが、エラーが出て詰まっています。
コンソールでデータを保存しようとすると下記のエラーメッセージが出力されました。
[1] pry(main)> @group = Group.new(name: "group1", user_ids: [8, 9])
=> #<Group:0x00007fdec218cf38
id: nil,
name: "group1",
created_at: nil,
updated_at: nil>
[2] pry(main)> @group.save!
ActiveRecord::RecordInvalid: Validation failed: Users is invalid
from /Users/〇〇/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.3.4/lib/active_record/validations.rb:80:in `raise_validation_error'
Userモデル
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
validates :nickname, presence: true
PASSWORD_REGEX = /A(?=.*?[a-z])(?=.*?[d])[a-zd]+z/i.freeze
validates_format_of :password, with: PASSWORD_REGEX
has_many :group_users
has_many :groups, through: :group_users
has_many :comments
has_one_attached :user_image
end
Groupモデル
class Group < ApplicationRecord
validates :name, presence: true
has_many :comments
has_many :events
has_many :group_users
has_many :users, through: :group_users
end
group_usersテーブル
class GroupUser < ApplicationRecord
belongs_to :group, optional: true
belongs_to :user, optional: true
end
validationエラーとなっていましたが、validationの設定を今回の実装に関してnameしかしていなかったので試しにGroupモデルのvalidationを削除してみましたが、変わりませんでした。
それ以外にvalidationに問題が見当たらなかったためモデルに関して調べたところ、中間テーブルに設定しているbelongs_toにoptionalというオプションがあることを知り、記述してみました。ですが、それでも出力結果は変わらずvalidationエラーになってしまうため息詰まってしまいました。
初心者なので基礎的なことになってしまいますが、お力をお貸しいただけるとありがたいです。不備があるかもしれませんが何卒よろしくお願いいたします。
開発環境
Ruby : 2.6.5
Ruby on Rails : 6.0.0
DB : Mysql 5.6.47
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP