将多个活动记录转换为单个数组

时间:2016-08-07 00:56:55

标签: ruby-on-rails ruby-on-rails-4 activerecord

我有一个应用程序,我有用户被分配给客户。每个客户端客户端都有多个项目。我试图创建一个包含用户负责的所有项目的项目下拉列表。为此,我创建了实例变量@project,@ client存储了用户分配给的每个客户端。我从这里完成的是循环客户端并在项目数据库中搜索client = @client的位置并将其添加到@project:

@client.each do |myprojects|
   @project << Project.where(client: myprojects.client_name)
end

这会导致@projects存储Activerecord_Relations,而这并不是我所希望的。有没有办法简单地将所有数据存储为一个数组?这样我就可以使用@ project.project_name打印出我的下拉列表。

1 个答案:

答案 0 :(得分:0)

使用语法

Model.where(attribute: array_of_attributes)

所以对于你的情况

@client.each do |myprojects|
    names << myprojects.client_name
end
@project = Project.where(client: names)

由于各种原因我不喜欢处理数组,但要将其转换为数组,你可以这样做

@project.to_a

顺便说一下,我认为你的数据库可以得到更好的改进。一个项目应该belong_to一个客户端,以便获得“用户负责的所有项目”只是

@client.projects.pluck(:project_name)