具有关系表

时间:2015-11-12 15:23:00

标签: ruby-on-rails

我有两种型号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列:

  • user_id
  • related_user_id

1 个答案:

答案 0 :(得分:0)

我的选择是在您的User表中为可能的related_to字段添加一个外键。

如果要求是它只能是一个(或没有)那么为什么不呢?

你仍然保留其他&#34; user_relations&#34;适用于所有其他类型。在rails中,我们一直以不同的方式映射到同一个实体。它根本不常见