我有一个应用程序,我有用户被分配给客户。每个客户端客户端都有多个项目。我试图创建一个包含用户负责的所有项目的项目下拉列表。为此,我创建了实例变量@project,@ client存储了用户分配给的每个客户端。我从这里完成的是循环客户端并在项目数据库中搜索client = @client的位置并将其添加到@project:
@client.each do |myprojects|
@project << Project.where(client: myprojects.client_name)
end
这会导致@projects存储Activerecord_Relations,而这并不是我所希望的。有没有办法简单地将所有数据存储为一个数组?这样我就可以使用@ project.project_name打印出我的下拉列表。
答案 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)