0

你好堆栈溢出的人

我对 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 姓名 电子邮件 电话号码

和其他设计的东西

4

1 回答 1

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 through。一个快速的谷歌搜索应该会给你很好的结果。

祝你好运!

于 2013-07-19T07:40:55.687 回答