我有 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:无法修改关联“User#shedules”,因为源反射类“Shedule”通过:has_many 关联到“服务”。
经过一番谷歌搜索后,我发现了这个和其他一些类似的帖子,但它们都不适合我的问题。
当然我可以通过迭代用户服务来删除它,比如
my_user.services.each do |s|
s.shedules.delete_all
end
但我很有趣为什么不my_user.shedules.delete_all
工作。
谢谢!