从连接表中获取数据

时间:2013-05-22 08:13:34

标签: ruby-on-rails ruby-on-rails-3

我有一个名为Profile的自引用模型,它通过Relationship模型连接。

class Profile < ActiveRecord::Base
  belongs_to :user

  has_many :accepted_relationships, class_name: 'Relationship', foreign_key: 'responder_id'
  has_many :followers, through: :accepted_relationships, source: 'initiator'

  has_many :initiated_relationships, class_name: 'Relationship', foreign_key: 'initiator_id'
  has_many :followed_profiles, through: :initiated_relationships, source: 'responder'

  has_many :groups
end

class Relationship < ActiveRecord::Base
  belongs_to :responder, class_name: 'Profile', foreign_key: 'responder_id'
  belongs_to :initiator, class_name: 'Profile', foreign_key: 'initiator_id'
  belongs_to :group
end

class Group < ActiveRecord::Base
  belongs_to :profile

  has_many :relationships

  attr_accessible :name
end

问题是我不知道如何访问连接模型上的数据。如果我做了类似的事情;

user.profiles[1].followers[1]

它会给我我想要的个人资料。我也希望有类似的东西;

user.profiles[1].followers[1].assigned_group

所以我可以访问该关系所属的组。

我的设计是关闭的,还是我在这里忽略了什么?

2 个答案:

答案 0 :(得分:0)

我想,您的论坛会有很多个人资料,并且您的小组需要关系,您可以在您的小组中建立关系或个人资料或通过关系配置个人资料

答案 1 :(得分:0)

我越来越接近答案了。我正在将一个块传递给has_many

has_many accepted_relationships... do
  def assigned_group
    #code
  end
end

我还没有完全理解,但我认为这是我需要采取的路线。