私は3つのモデルを持っています:
スケジュール
belongs_to :service
サービス
belongs_to :user, :foreign_key => "owner"
has_many :shedules, :dependent => :destroy
ユーザー
has_many :services, :foreign_key => "owner", :dependent => :destroy
has_many :shedules, :through => :services, :foreign_key => "owner", :dependent => :destroy
次に、ユーザーのすべてのスケジュールを見ることができますmy_user.shedules
私の目標は、ユーザーのすべてのスケジュールを削除することです。その後、試しmy_user.shedules.delete_all
てみましたが、次のエラーが発生しました。
ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection: ソース リフレクション クラス 'Shedule' が :has_many 経由で 'Service' に関連付けられているため、関連付け 'User#shedules' を変更できません。
グーグルで検索した後、これと他の同様の投稿をいくつか見つけましたが、それらはすべて私の問題に適合しません。
もちろん、次のようなユーザーサービスを繰り返すことでこれを削除できます
my_user.services.each do |s|
s.shedules.delete_all
end
しかし、私はなぜmy_user.shedules.delete_all
うまくいかないのか興味深いです。
ありがとう!