1
我有users_by_role:在紅寶石
的函數,並且它在下面的格式返回數據「警告一個塊參數(2 1)的多個值」,
[
[#<Role id: 1, name: "Developer">,[#<User id:1, name: "Abc">,#<User id:2, name: "xyz">]]
[#<Role id: 2, name: "Tester">,[#<User id:11, name: "Abcd">,#<User id:12, name: "wxyz">]]
]
現在,我想選擇用戶給定角色/ s的
我使用,
project.users_by_role.select{|o| o.first.name == "Developer"}
,其中項目是項目對象
都好,代碼返回我的數據,但在沿着我得到以下警告
警告:一個塊參數的多個值(2 1)
而且我要找優化,這樣做
完整的代碼片段的短的方式是這樣的:
project.users_by_role.select{|o| o.first.name == "Developer" }.collect{|e| e.last.map{|f| [f.id,f.firstname + ' ' + f.lastname]}}.flatten(1).uniq
通過上面的代碼我想獲得給定角色的所有用戶名。
貌似我誤解了users_by_role返回的數據。是的,它應該是project.users_by_role.select {| role,users |} –
並且關於第二個答案,project.users_by_role.select {| role,users | project.users_by_role.select {| role,users | role.name =「role.name ==」Developer「or role.name == Tester」}。first.last.wont give give desired result。所以這就是我正在使用的,project.users_by_role.select { =「Developer」or role.name ==「Reporter」}。collect {| role,users | users.map {| u | [u.id,u.firstname]}}。flatten(1).uniq –
很多thnx爲了找出錯誤,你還想評論一下更好的方法嗎? –