由于关联,无法在数据库上destroy_all用户

时间:2016-05-31 16:23:09

标签: ruby-on-rails associations

尝试在我的数据库中destroy_all我的用户时遇到了问题。当我运行User.destroy_all时,我得到:

ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection: Cannot modify association 'Account#hotel_partnerships' because the source reflection class 'Partnership' is associated to 'Hotel' via :has_many.

我怀疑主要的问题是,在我的架构中,我有一个account模型,belongs_to一个user(帐户的所有者),同时account has_many users 1}}通过其officeshotels

以下是我的协会的样子:

- Account.rb

    class Account < ActiveRecord::Base
      # associations
      has_many :hotel_partnerships, through: :hotels, source: :partnerships, dependent: :destroy
      has_many :office_partnerships, through: :offices, source: :partnerships, dependent: :destroy
      has_many :hotel_users, through: :hotels,source: :users, dependent: :destroy
      has_many :office_users, through: :offices, source: :users, dependent: :destroy
      has_many :hotels, dependent: :destroy
      has_many :offices, dependent: :destroy
      has_many :rooms, through: :hotels, dependent: :destroy
      has_many :tasks, through: :hotels, dependent: :destroy
      belongs_to :admin, class_name: "User", foreign_key: "admin_user_id", dependent: :destroy

- User.rb

    class User < ActiveRecord::Base
      ## this line adds auth token to all user on creation
      acts_as_token_authenticatable
      # associations
      belongs_to :account, dependent: :destroy
      has_and_belongs_to_many :hotels
      has_and_belongs_to_many :offices
      has_many :tasks, dependent: :destroy
      has_many :bookings, dependent: :destroy
      has_one :created_account, class_name: "Account", foreign_key: "admin_user_id", inverse_of: :admin, dependent: :destroy

- Partnership.rb

    class Partnership < ActiveRecord::Base

      belongs_to :hotel
      belongs_to :office

- Hotel.rb

    class Hotel < ActiveRecord::Base
      geocoded_by :full_address
      after_validation :geocode

      has_many :partnerships
      belongs_to :account
      has_and_belongs_to_many :users
      has_many :tasks, dependent: :destroy
      has_many :rooms, dependent: :destroy
      has_many :beds, through: :rooms, dependent: :destroy
      has_many :photos, dependent: :destroy
      accepts_nested_attributes_for :photos
      accepts_nested_attributes_for :rooms

是否可以修复此循环关联问题?

0 个答案:

没有答案