gpt4 book ai didi

ruby-on-rails - Rails 如何获取一个对象的所有孙子

转载 作者:行者123 更新时间:2023-12-04 06:19:31 24 4
gpt4 key购买 nike

我有 3 个模型:

User
has_many :questions
has_many :corrections
end

Question
has_one :correction
belongs_to :user
end

Correction
belongs_to :user
belongs_to :question

因此,如果用户 Bob 提出问题,则用户 Terry 可以检查它,如果有错误,则提供更正。

让我们和 bob 在一起,假设他善意地纠正了其他 5 个用户,即假设他很幸运地从其他用户那里得到了 3 个更正。

我希望能够做这样的事情

@bob.corrections_offered => 5 个校正对象
@bob.corrections_received => 3 个校正对象

第一个很简单,因为它实际上只是引擎盖下的@bob.corrections。但我不知道如何实现后一个。任何人都可以帮忙吗?

更新

所以我尝试按照建议使用 through(哦,实际上上面的问题模型实际上在我的代码中称为 Sentence。即用户 => Sentence => Correction。)
has_many :sentences
has_many :corrections_received, :through => :sentences, :class_name => 'Correction'

但在控制台中出现此错误

ActiveRecord::HasManyThroughSourceAssociationNotFoundError: Could not find the source association(s) :Correction in model Sentence. Try 'has_many :corrections_received, :through => :sentences, :source => '. Is it one of :language, :correction, :user, or :checker?



所以尝试了以下
has_many :corrections_received, :through => :sentences, :source => :correction 

但得到

ActiveRecord::HasManyThroughSourceAssociationMacroError: Invalid source reflection macro :has_one for has_many :corrections_received, :through => :sentences. Use :source to specify the source reflection.



不知道出了什么问题...

最佳答案

您可以添加 has_many through您的用户模型中的关系像这样

class User
#your usual relationships
has_many :corrections_received, :through => :questions, :class_name => 'Correction'
end

关于ruby-on-rails - Rails 如何获取一个对象的所有孙子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com