在我的Post模型中,我有
has_many :followers
在我的关注者模型中,我有
belongs_to :model
belongs_to :owner,polymorphic: true
在我的用户和管理员设计模型中,我有
has_many :followers,as: :owner
要求::我想要一个类似Post.owners
的东西,它应该向我返回此帖子之后的所有用户和/或管理员的列表。
答案 0 :(得分:2)
我不确定,但是我认为AR不能提供一种在一个查询中加载多态关联的方法。但是您可以使用:
post = Post.find(1)
post_followers = post.followers.includes(:owner)
post_owners = post_followers.map(&:owner)
答案 1 :(得分:2)
您要寻找的解决方案是多态的,它有很多方面。您可以在用户和管理员模型中添加这些行。
has_many :followers
has_many :posts, through: :followers, source: :owner, source_type: 'Owner'
答案 2 :(得分:0)
我认为您想要这样的东西:
const test = async (asyncFunc) => {
return await asyncFunc()
}
test(async () => {
return "Hello World!"
}).then(console.log)
然后从您的User实例中,使用@ user.posts检索其帖子。 您的关注者@ follower.posts
也是如此如果要转到帖子实例的父级,可以通过@ post.owner进行。但是,要使此工作有效,我们需要通过在使用引用形式声明多态接口的模型中声明外键列和类型列来正确设置架构:
class Post < ApplicationRecord
belongs_to :owner, polymorphic: true
end
class User < ApplicationRecord
has_many :posts, as: :owner
end
class Follower < ApplicationRecord
has_many :posts, as: :owner
end