0
我有,我希望能够在由CURRENT_USER车型范围的控制器Rails中模型过滤的最佳做法是什么?
- 1)的指数动作来筛选集合的使用情况下,如果提交
- 2)
params[:ids]
我使用委派过滤到模型与范围或类方法:
class Zombie < ActiveRecord::Base
has_many :weapons
def self.filter_by_weapons(weapons)
where(weapons: weapons)
end
end
而在控制器
def index
@zombies = Zombie.filter_by_weapons(current_user.weapons)
end
它运作良好。但是,如果我想我的应用程序能够过滤基于ID的名单上的zombies
,我会做:
def index
@zombies = Zombie.filter_by_weapons(current_user.weapons)
if params[:weapons_ids]
@zombies = @zombies.filter_by_weapons(Weapon.where(id: params[:weapon_ids]))
end
end
然而,这打破了只有一种模式,应在控制器动作被称为规则。
我试着范围由IDS,而不是模型实例,但问题是相反的,我要的current_user.weapons
所以ID映射,什么是做到这一点的最好方法是什么?
我没有时间到后一个完整的答案,但检查出拉姆达范围。 – emcanes