通过另一个模型与自己的用户关系

时间:2013-01-29 21:08:31

标签: ruby-on-rails rails-activerecord

我对如何构建activerecord关联感到困惑。我有一个属于用户的对象。该对象是由其他几个用户发送的。

class Object < ActiveRecord::Base
  belongs_to :user
  belongs_to :sender, :class_name => "User"
end

class User < ActiveRecord::Base
  has_many :objects
end

我对如何设置“Sender”类感到困惑,因此我可以访问@ card.senders。我目前使用card_id和user_id

class Sender < ActiveRecord::Base
  has_many :objects
end

似乎无法让它发挥作用。有什么帮助吗?

1 个答案:

答案 0 :(得分:4)

您正尝试在ObjectUser之间设置HABTM (拥有并属于许多或多对多)关系。尝试这样的事情。

class Object < ActiveRecord::Base
  belongs_to :user

  has_many :senders, through: :object_relationships, source: :user, class_name: "User"
  has_many :object_relationships
end

class User < ActiveRecord::Base
  has_many :owned_objects, inverse_of: :user

  has_many :objects, through: :object_relationships
  has_many :object_relationships
end

class ObjectRelationship < ActiveRecord::Base
  belongs_to :user
  belongs_to :object
end

我更喜欢HABTM关联的has_many ..., through: ...方法而不是has_and_belongs_to_many,因为我喜欢详细说明。您可以阅读有关在here之间进行选择的信息。