与 join table 和多个别名的多对多关联
Many-to-many association with join table and multiple aliases
我正在开发一个地理藏宝应用程序,用户可以在其中创建新的缓存或访问现有的缓存。以下是型号:
class User < ApplicationRecord
has_many :usercaches
has_many :visited_caches, source: :caches, through: :usercaches
has_many :created_caches, class_name: :caches
end
class Cache < ApplicationRecord
has_many :usercaches
has_many :visitors, source: :users, through: :usercaches
end
class Usercache < ApplicationRecord
belongs_to :user
belongs_to :cache
end
联接 table 看起来是这样的,因为我一直在努力消除与大写或复数相关的任何潜在错误。每当我在 Rails 控制台中创建用户并尝试查看 new_user.visited_caches
时,我都会收到以下错误:
ActiveRecord::HasManyThroughSourceAssociationNotFoundError: Could not
find the source association(s) :caches in model Usercache. Try
'has_many :visited_caches, :through => :usercaches, :source =>
'. Is it one of user or cache?
然而,当我按照建议重新排列关联时,错误仍然存在。是否遗漏了一些小细节,或者我是否使用了完全不正确的范例来实现我想要完成的目标?
source
必须以单数形式提供(documentation为has_many
提供了一个例子):
class User < ApplicationRecord
has_many :usercaches
has_many :visited_caches, source: :cache, through: :usercaches
has_many :created_caches, class_name: :caches
end
class Cache < ApplicationRecord
has_many :usercaches
has_many :visitors, source: :user, through: :usercaches
end
class Usercache < ApplicationRecord
belongs_to :user
belongs_to :cache
end
我正在开发一个地理藏宝应用程序,用户可以在其中创建新的缓存或访问现有的缓存。以下是型号:
class User < ApplicationRecord
has_many :usercaches
has_many :visited_caches, source: :caches, through: :usercaches
has_many :created_caches, class_name: :caches
end
class Cache < ApplicationRecord
has_many :usercaches
has_many :visitors, source: :users, through: :usercaches
end
class Usercache < ApplicationRecord
belongs_to :user
belongs_to :cache
end
联接 table 看起来是这样的,因为我一直在努力消除与大写或复数相关的任何潜在错误。每当我在 Rails 控制台中创建用户并尝试查看 new_user.visited_caches
时,我都会收到以下错误:
ActiveRecord::HasManyThroughSourceAssociationNotFoundError: Could not find the source association(s) :caches in model Usercache. Try 'has_many :visited_caches, :through => :usercaches, :source => '. Is it one of user or cache?
然而,当我按照建议重新排列关联时,错误仍然存在。是否遗漏了一些小细节,或者我是否使用了完全不正确的范例来实现我想要完成的目标?
source
必须以单数形式提供(documentation为has_many
提供了一个例子):
class User < ApplicationRecord
has_many :usercaches
has_many :visited_caches, source: :cache, through: :usercaches
has_many :created_caches, class_name: :caches
end
class Cache < ApplicationRecord
has_many :usercaches
has_many :visitors, source: :user, through: :usercaches
end
class Usercache < ApplicationRecord
belongs_to :user
belongs_to :cache
end