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