Ruby on rails 与用户的两种类型的关联有很多,:到

Ruby on rails 与用户的两种类型的关联有很多,:到,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我有一个模型用户。用户可以拥有一个对象。用户还可以相互发送对象。我正在尝试访问某个用户的所有“发件人”,以便访问@user.senders并获取该用户的所有唯一发件人。这是我的设置: class Object < ActiveRecord::Base belongs_to :user has_many :senders, through: :object_relationships, source: :user, class_name: "User" has_many :ob

我有一个模型用户。用户可以拥有一个对象。用户还可以相互发送对象。我正在尝试访问某个用户的所有“发件人”,以便访问@user.senders并获取该用户的所有唯一发件人。这是我的设置:

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
class对象
有什么想法吗?

班级礼物class Gift < ActiveRecord::Base
  belongs_to :user

  has_many :gift_senders    
  has_many :senders, through: :gift_senders, source: :user
end

class User < ActiveRecord::Base
  has_many :sent_gifts, class_name: 'Gift', foreign_key: :user_id

  has_many :gift_senders    
  has_many :accepted_gifts, through: :gift_senders, source: :gift
end

class GiftSender < ActiveRecord::Base
  belongs_to :user
  belongs_to :gift
end
属于:用户 有很多送礼人吗 有很多:发件人,通过::礼物发件人,来源::用户 结束 类用户
为了避免混淆,我将您的模型重命名为gift。

您真的不应该将您的模型命名为
对象,因为该类在ruby中具有特殊意义:而且,您想访问用户的所有发件人吗?但在现在的模型中,用户没有发送者,对象有发送者(通过对象关系)。请澄清您想要哪个。我在这里使用Object作为占位符只是为了使其他人更容易理解。我希望能够从用户和对象访问发件人。现在,它被设置为仅从对象获取,但即使这样也不起作用,因为它说“发送者”模型无法识别。我已经对它进行了测试,并将发送者添加到对象(我将其重命名为
MyObject
)中,效果很好。您实际使用的是类名
对象
?即使是在这样一个简单的测试用例中,这也可能会导致问题。相反,这似乎奏效了。它有什么问题吗?:有很多:接受礼物,:class\u name=>“礼物”,与::user相反