gpt4 book ai didi

ruby-on-rails - 尝试在 Rails 5 的 has_many 范围内引用 self

转载 作者:行者123 更新时间:2023-12-02 20:41:13 25 4
gpt4 key购买 nike

我有以下设置:

class TeamEnrollment < ApplicationRecord
belongs_to :team
has_many :term_enrollments, through: :team
end

上面的代码工作正常。现在我需要将 has_many 行更改为如下所示:

has_many :term_enrollments, 
-> {where("(term_enrollments.term_start_date <= ? AND term_enrollments.term_end_date >= ?) OR (term_enrollments.term_start_date >= ? AND term_enrollments.term_end_date > ?) OR (term_enrollments.term_start_date <= ? AND term_enrollments.term_end_date >= ?)", self.start_date, self.start_date, self.start_date, self.termination_date, self.termination_date, self.termination_date)}
, through: :team

从上面的代码中,如果我尝试执行 TeamEnrollment.first.term_enrollments,我会收到以下错误:

undefined method `start_date' for #<TermEnrollment::ActiveRecord_Relation:0x007ff706550550>

我已经使用上面代码的第一个配置测试了 where 子句,它工作正常。只有在 has_many 子句中时它才不起作用。我很确定这与 has_many through 内部使用 self 有关。我试图引用 TeamEnrollment 的 start_date。我该怎么做呢?

最佳答案

has_many有关范围的文档部分显示了以下示例:

has_many :posts, ->(blog) { where("max_post_length > ?", blog.max_post_length) }

该示例显示 scope 可以采用一个参数,即调用它的记录

关于ruby-on-rails - 尝试在 Rails 5 的 has_many 范围内引用 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46040839/

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