Можно ли установить ограничение уровня экземпляра для has_many: через отношение в рельсах 3.1?
http://guides.rubyonrails.org/association_basics.html#the-has_many-association
Что-то вроде:
Class A
has_many :c, :through => :b, :conditions => { "'c'.something_id" => @a.something_id }
Документация дает мне надежду на это, но она не работает для меня:
Если вам нужно динамически оценивать условия во время выполнения, вы можете
использовать интерполяцию строк в одинарных кавычках:
class Customer < ActiveRecord::Base
has_many :latest_orders, :class_name => "Order",
:conditions => 'orders.created_at > #{10.hours.ago.to_s(:db).inspect}'
end
Это дает мне "нераспознанный токен" # "на рельсах 3.1. Хотите знать, если эта функция больше не работает?
РЕДАКТИРОВАТЬ
Хочу уточнить, почему я не думаю, что сфера - это решение. Я хочу иметь возможность получить из экземпляра A все C, которые имеют условие (которое основано на атрибуте этого экземпляра A). Это единственные C, которые должны когда-либо ассоциироваться с этим A. Чтобы сделать это с областями действия, я бы поставил область видимости на C, которая принимает аргумент, а затем должен был бы вызвать его из @a с некоторым значением? Я не понимаю, почему это лучше, чем включить его в мой запрос has_many напрямую.