如何使用数组查询rails模型

时间:2013-07-19 07:16:42

标签: ruby-on-rails rails-models sqlite3-ruby

你好堆栈溢出的人

我对rails平台比较陌生,需要一些模型查询帮助

这是我的代码:

def create
@project = Project.new(params[:project])
if @project.save
    redirect_to new_project_path
end

student=@project.student_str.split(";")
end

每次创建新项目时,都会存储一个名为student_str的字符串,其中每个学生的ID号由“;”分隔。我使用split函数将该字符串拆分为数组

所以,这是我的问题

我有另一个名为users的模型,其中包含系统中所有学生的列表。 我想为所有模型条目选择@users,其ID与数组“student”中的任何数组值匹配。

非常感谢任何帮助

由于

编辑:

现在,我正在测试垃圾数据。所以我的student_str会是这样的 1PI12CS019; 1PI10IS034; 1PI11ME110

每个ID都由“;”

分隔

学生模型是使用devise gem创建的,包含以下字段

ID 名称 电子邮件 电话号码

和其他设计的东西

1 个答案:

答案 0 :(得分:1)

给定student_str1PI12CS019;1PI10IS034;1PI11ME110,使用这些ID获取用户的最简单方法是首先拆分字符串并使用结果进行查询。

>> student_str = '1PI12CS019;1PI10IS034;1PI11ME110'
>> ids = student_str.split(';')
>> User.where(id: ids) # should give you a list of users matching the ids in the string

了解这一点,实际上有两件事我想提出来。

  1. 如果你遵守惯例,你将使用Rails轻松生活,所以我建议你用整数作为id而不是那些字符串。
  2. 而不是将id保存在单个列中,最好创建另一个将用户和学生关联的表。最简单的方法是通过has_and_belongs_to_many。更复杂的方法是使用has_many。快速谷歌搜索这应该会给你很好的结果。
  3. 祝你好运!