【发布时间】:2012-06-19 13:04:23
【问题描述】:
好的,我有这个助手
def playlist_count(user, site_id)
user.companies.local(site_id).map(&:playlists).flatten.count
end
这将返回所有公司的播放列表计数
class Playlist < ActiveRecord::Base
belongs_to :company
scope :active, where('end_date >= ? AND player_id IS NOT NULL', Date.today)
class Company < ActiveRecord::Base
has_many :playlists, :dependent => :destroy
scope :local, lambda{ |site_id| where(:site_id => site_id) }
问题是助手变得丑陋,另一个问题是我需要活动播放列表(由我在播放列表模型中的范围定义)
有没有办法清理我的助手或使用范围来获取所有用户公司的活动播放列表计数
【问题讨论】:
-
您应该将活动范围参数包装在 lambda 中,以便在任何时候调用范围时都会评估 Date.today。
scope :active, lambda { where(...) }
标签: ruby-on-rails ruby ruby-on-rails-3 scope