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为了找出错误,你还想评论一下更好的方法吗? –