【发布时间】:2015-07-14 13:41:43
【问题描述】:
概述:
我有一个使用 mysql 数据库的 rails 项目,该数据库从 2 个来源上传了有关大学生成绩的数据。
当我上传成绩时,我需要先找到关于学生注册课程的哪个部分的“Enroll”记录。“Enroll”通过belongs_to连接到“Student”和“Section”。 Student 将存在于学生表中,但 Section 和 Enroll 可能存在也可能不存在。如果它们不存在,我想创建它们。
当前代码:
我目前解决这个问题的尝试是:
enrolled = Enroll.find_or_create_by(Student: student,
Section: {Course: course, semester: semester, year_offered: year_taken})
我收到以下错误:
Mysql2::Error: 'where 子句'中的未知列'Section.semester': SELECT enrolls.* FROM enrolls WHERE Section.semester = 'Fall' AND Section.@987654328 @ = 2012 和 Section.Course_id = 4 和 enrolls.Student_id = 11 限制 1
问题:
1) 这是进行此查询的正确方法吗?如果该部分不存在,我是否需要多步骤?
2) 为什么会出现未知列错误?
其他细节:
sections = Section.where(Course: course, semi-term: term, year_offered: year_taken) 工作正常。
注册属于_学生和部门。
学生和部门 has_many 注册 模型依赖图的相关部分是:
我是 Rails 新手,所以如果您有其他需要,请告诉我。或者,如果已经有另一个页面解释了这一点,请指出我那里。我发现很难找到相关页面,因为我在搜索时并不熟悉术语。
【问题讨论】:
-
如果您希望
Section表有一个semester列,如图所示,您可能需要迁移您的数据库,因为Rails 看不到它。您可以随时查看db/schema.rb以查看已迁移的内容。另外,我认为您不能通过一次调用find_or_create_by在单独的表中创建实例。
标签: mysql ruby-on-rails