0
我有一個User
模型:試圖 '別名' 多態的has_many關係
class User < ActiveRecord::Base
has_many :tracks, dependent: :destroy
has_many :tracked_locations, through: :tracks, source: :tracking, source_type: 'Location'
和Track
模型(認爲它是 '下面'):
class Track < ActiveRecord::Base
belongs_to :user
belongs_to :tracking, polymorphic: true
end
這裏的想法是我將有很多模型來跟蹤/跟蹤,因此我使用多態性。比如我有一個Location
模型:
class Location < ActiveRecord::Base
has_many :tracks, :as => :tracking, :dependent => :destroy
has_many :users, through: :tracks
現在Location.first.users
工作與User.first.tracked_locations
沿細控制檯。
現在我將沿着Flagged
的行添加另一個多態關係。用戶可以用筆記等「標記」另一個模型。因此,如果我將has_many :users, through: :flagged
添加到Location
模型,例如我需要區分跟蹤用戶和標記用戶。
我想:
has_many :tracking_users, through: :tracks, source: :tracking, source_type: 'User'
,但我得到:
NoMethodError: undefined method `evaluators_for' for #<Location:0x007ff29e5409c8>
我甚至可以做到這一點還是我失去了一些東西簡單嗎?
UPDATE
基於答案下面我想通了:
has_many :tracking_users, through: :tracks, class_name: "User", foreign_key: "user_id", source: :user
關閉但它拋出的錯誤指向我猜測的正確方向:has_many:tracking_users,通過:: tracks,class_name:「User」,foreign_key:「user_id」,來源::工作的用戶 –