0

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

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

class User < ActiveRecord::Base
  has_many :objects
end

我对如何设置“发件人”类感到困惑,以便我可以访问@card.senders。我目前有 card_id 和 user_id

class Sender < ActiveRecord::Base
  has_many :objects
end

似乎无法让它工作。有什么帮助吗?

4

1 回答 1

4

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

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

我更喜欢has_many ..., through: ...使用 HABTM 关联的方法,has_and_belongs_to_many因为我喜欢冗长。您可以在此处阅读有关在两者之间进行选择的信息。

于 2013-01-29T21:22:52.550 回答