Это старый вопрос, но я просто хотел сделать то же самое, и натолкнулся на этот вопрос во время поиска. Я никогда не находил решения, но я нашел что-то, что хорошо работает.
Для вашего примера, вы можете сделать это:
class Box < ActiveRecord::Base
has_many :balls do
def self.extended(base)
base.where_values += Ball.green.where_values
end
end
end
class Ball < ActiveRecord::Base
belongs_to :box
scope :green, where(:color => "green")
end
Я не знаю о последствиях этого, но после некоторого начального тестирования, это работает без проблем. Есть и другие значения, которые можно установить, например eager_load_values
, join_values
, order_values
и т. Д.