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”,来源::工作的用户 –