Rails5でアソシエーション時の注意です。
STIの演習時に詰まった
いつもお世話になってるこのサイトの通りやったのですが、エラーが出てしまいました。
computerを作成しようとしても、「author must exit」とエラーが出て作成できません。
どうやらRails5で追加された機能のようです。
# Require `belongs_to` associations by default. Previous versions had false. Rails.application.config.active_record.belongs_to_required_by_default = true
外部キーのnullを許容してくれないのがdefaultの設定になったみたいです。
これを外すには
class Product < ApplicationRecord belongs_to :cpu, optional: true belongs_to :maker, optional: true belongs_to :author, optional: true # validates :cpu_id, length: { minimum: 1 }, allow_nil: true # validates :maker_id, length: { minimum: 1 }, allow_nil: true # validates :author_id, length: { minimum: 1 }, allow_nil: true validates :name, presence: true validates :price, presence: true validates :type, presence: true end
optional: true
をつければいけます。
モデルクラスに各々のvalidationをつければこれでも問題ないです。
例えばcomputerクラスなら以下のような感じですね!
# models/computer.rb class Computer < Product validates :cpu_id, presence: true validates :maker_id, presence: true end
コメントを残す