Я на Rails 2.3.5. Внутри моего приложения пользователь может забронировать один или несколько временных интервалов на определенный день. Я определил этот named_scope в моей модели слотов:
# day time slots
named_scope :for_day, lambda { |day|
if !day.blank?
{ :conditions => ['day_of_week = ?', day] }
end
}
Я использую это, чтобы получить все «временные интервалы», доступные за день.
Однако у меня есть страница, на которой я хотел бы увидеть все забронированные слоты (другими словами, слоты других пользователей).
Поэтому, когда я вызываю URL /slots
, я хотел бы получить каждый забронированный слот, когда вместо этого я вызываю / user / 2 / slots, мне нужны только те, что для пользователя 2.
Я добавил этот маршрут map.resources :users, :has_many => :slots
в мой route.rb
и этот код для моего slots_controller.rb:
def index
if params[:user_id]
@slots = User.find(params[:user_id]).slots
else
@slots = Slot.all
end
end
Обратите внимание, что пользователь также может видеть только забронированные слоты другого пользователя.
Теперь, когда я пытаюсь использовать вышеуказанную область видимости: for_day для массива Slot.all, я получаю:
undefined method for_day for #<Array:0x104441f60>
Мне удалось это исправить, добавив named_scope :all, :conditions => {}
к модели Slot, но мне кажется это странным решением.
Не могли бы вы мне помочь?