将两列的值提取到单个哈希变量

时间:2017-03-27 09:31:28

标签: mysql ruby-on-rails

在Ruby on Rails中,我试图从rails中的user_id和id列获取值。现在我使用以下代码连接两列firstname和lastname

@profiles = Profile.all.map{|p| "#{p.users_firstname} #{p.users_lastname}"}

相反,我必须将列添加为两个条目。请帮忙。提前致谢

更新

我想得到像这样的值

@profile = [' user1_firstname',' user1_lastname',' user2_firstname',' user2_lastname',....]

4 个答案:

答案 0 :(得分:1)

您当前的代码会产生如下内容:

@profiles = [ 'Edie Pineo', 'Tierra Cardiel', 'Sparkle Berrey' ]

你在问:

  

相反,我必须将列添加为两个条目

所以,如果我正确地得到了你想要的东西,比如:

@profiles = [ ['Edie', 'Pineo'], ['Tierra', 'Cardiel'], ['Sparkle', 'Berrey'] ]

...这是一个字符串数组,而不是您当前的代码,它是一个字符串数组。

如果是这样,以下是一个解决方案:

@profiles = Profile.all.map{|p| [p.users_firstname, p.users_lastname] }

更新1(唯一值):

@profiles = Profile.pluck(:users_firstname, :users_lastname).uniq

更新2(唯一值+忽略尾随和前导空格):

@profiles = Profile.pluck(:users_firstname, :users_lastname).map{|array| array.map(&:strip) }.uniq

更新3(唯一值+忽略String& Integer的严格相等)

# if you want string values
@profiles = Profile.pluck(:users_firstname, :users_lastname).map{|array| array.map(&:to_s) }.uniq

# if you want integer values
@profiles = Profile.pluck(:users_firstname, :users_lastname).map{|array| array.map(&:to_i) }.uniq

更新4(1级数组而不是嵌套数组)

...继续我们的discussion并回答更新问题

@profiles = Profile.pluck(:users_firstname, :users_lastname).flatten

- 经过测试的工作

答案 1 :(得分:1)

假设import {Component} from "@angular/core"; import { Router, NavigationStart } from "@angular/router"; import {ActionService} from "../../../services/application/action.service"; @Component({ selector: 'app-action-bar', templateUrl: './action-bar.component.html', styleUrls: ['./action-bar.component.scss'] }) export class ActionBarComponent { private links = []; constructor(private actionService: ActionService, private router: Router) { this.router.events.subscribe((evt) => { if (evt instanceof NavigationStart) { this.links = []; } }); this.actionService.getLinks().subscribe(link => { this.links.push(link); }); } } users_firstnameusers_lastname的属性,您可以完全跳过地图:

Profile

答案 2 :(得分:1)

我认为你想使用pluck。下面将返回一个数组数组,每个嵌套数组包含firstname和lastname。

Profile.pluck(:users_firstname, :users_lastname)

如果您的问题的标题显示为“哈希”,则可以将其转换为to_h的哈希值。从您的问题中不清楚您希望如何格式化哈希

答案 3 :(得分:0)

这是你在找什么?

@profiles = Profile.all.select(:users_firstname, :users_lastname).to_a