我有两种型号User和UserRelation。案例是用户有几个相关用户(由他推荐),但他只有一个人相关_to(推荐他的人)。
我想从推荐用户的User对象集合和推荐他的用户返回。我已经为返回用户集合编写了关联,但它可以工作,但我不知道应该如何编写has_one
关联。
我收到此错误:
ActiveRecord::HasOneThroughCantAssociateThroughCollection: Cannot have a has_one :through association 'User#relation' where the :through association 'User#user_relations' is a collection. Specify a has_one or belongs_to association in the :through option instead
用户模型:
class User < ActiveRecord::Base
has_many :user_relations
has_many :related_users, through: :user_relations, source: :related_user
has_one :relation, through: :user_relations, source: :user
end
UserRelation模型:
class UserRelation < ActiveRecord::Base
belongs_to :user
belongs_to :related_user, class_name: 'User'
end
UserRelation列:
答案 0 :(得分:0)
我的选择是在您的User表中为可能的related_to字段添加一个外键。
如果要求是它只能是一个(或没有)那么为什么不呢?
你仍然保留其他&#34; user_relations&#34;适用于所有其他类型。在rails中,我们一直以不同的方式映射到同一个实体。它根本不常见