【发布时间】:2010-10-15 17:08:15
【问题描述】:
我在 Rails 2.3.5 上。在我的应用程序中,用户可以预订特定日期的一个或多个时间段。我在我的 Slot 模型中定义了这个 named_scope:
# day time slots
named_scope :for_day, lambda { |day|
if !day.blank?
{ :conditions => ['day_of_week = ?', day] }
end
}
我用它来检索一天中所有可用的“时隙”。 但是我有一个页面,我想查看所有预订的插槽(换句话说,其他用户的插槽)。
因此,当我调用 /slots url 时,我想获取每个预订的插槽,而当我调用 /user/2/slots 时,我只需要用户 2 的那些。
我将这条路线 map.resources :users, :has_many => :slots 添加到我的 routes.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 模型,但这对我来说似乎是一个奇怪的解决方案。
你能帮帮我吗?
【问题讨论】: