我有两个表演和表演模型(以戏剧或喜剧形式表演)。它们在模型中的关联如下:

class Show < ActiveRecord::Base
  has_many :performances, :dependent => :destroy
  accepts_nested_attributes_for :performances
end

class Performance < ActiveRecord::Base
  belongs_to :show
end

在性能模型中,有一个称为:start_time的日期时间。

如何在模型中定义一个范围,该范围将返回至少具有一种其:start_time在将来出现的表演的所有演出?

另外,如何定义一个范围,该范围返回将来在其:start_time中没有任何表演的所有演出?

最佳答案

class Show < ActiveRecord::Base
   has_many :performances, :dependent => :destroy
   accepts_nested_attributes_for :performances

   scope :shows_with_pending_performance, includes(:performances).where("performances.start_time >= ? ", Date.today)
end

class Performance < ActiveRecord::Base
   belongs_to :show
end

09-25 18:30