41526

[code]

    class A < ApplicationRecord
      has_many :bs, dependent: :destroy
    end
    
    #  a_id :integer          not null
    class B < ApplicationRecord
      belongs_to :a
    end
    
[/code]

このようなモデルがある時に、A.first.deleteを実行すると

[code]

    ActiveRecord::InvalidForeignKey: SQLite3::ConstraintException: FOREIGN KEY constraint failed: DELETE FROM "as" WHERE "as"."id" = ?
    
[/code]

というエラーが出ます。  
自分の推測では外部キーに関連するエラーのようですが、そういったエラーが出ないようするために、dependentを設定したつもりでした。  
なぜこのようなエラーが出るのでしょうか？またどうやって解決すれば良いでしょうか？

ご回答いただけると助かります。


CC BY-SA 3.0
2018-02-06T22:21:12.783
41525
2018-02-07T00:25:40.077
15186
question
ruby-on-rails
Railsで1:多のモデルを消す際にエラーが出る。


`delete`の代わりに`destroy`を使ってください。

ActiveRecordには

  * コールバックやバリデーションが動く「通常の」メソッド
  * コールバックやバリデーションが動かないメソッド

があります。`destroy`は前者、`delete`は後者です。


CC BY-SA 3.0
2018-02-07T00:25:40.077
41526
2018-02-07T00:25:40.077
5793
41525
answer