我正在使用CRUD界面來管理我的應用程序中的用戶。我有一個常數User :: ROLES,它是一個在我的應用程序中具有有效用戶角色名稱的數組(管理員,教師,學生)。使用塊命名和創建實例變量[Ruby-on-Rails]
我想要做的是,在控制器的索引操作中,有一個塊遍歷ROLES常量,並從@users(已經在塊之前初始化)創建一個範圍實例變量。下面是該指數方法貌似至今:
def index
@users = user.all
#@students = @users.where(:role => "student") # This works by itself
User::ROLES.each do |r|
@r = @users.where(:role => r.to_s)
end
end
所以我希望能夠通過命名什麼的通過塊傳遞的實例變量,所以@r創建@admin,@teacher等。由於我新的紅寶石和鐵軌,我不太明白這樣做的語法。誰知道?反正可能有更好的方法。
編輯
只是爲了讓大家知道,我希望在視圖中使用的索引操作顯示由自己的角色進行分組的用戶列表。當然,在整個CRUD界面中它也會以其他方式使用,這就是爲什麼我之前沒有澄清用例,因爲它是多用途的。
「如果你在你的模型中改變一個角色,你將需要更新您的視圖中使用不同的實例方法」。現在你自相矛盾。如果您通過「@users [:admin]」訪問特定角色,則必須以完全相同的方式調整視圖,方法是更改角色名稱。 – 2012-04-27 21:51:23
謝謝。我不知道組方法和each_pair。這有很大幫助。 – GorrillaMcD 2012-04-27 22:21:58
嗯,我不知道爲什麼,但組方法不起作用。它像正常一樣返回用戶記錄,無需分組。我最終做了@users = User.all.group_by(&:role)',然後按預期工作。 – GorrillaMcD 2012-05-07 22:53:01