ruby-on-rails - Rails:ActiveRecord::StatementInvalid 在

标签 ruby-on-rails ruby-on-rails-4

我试图在我的 Controller 中使用它来获取与学生(has_many:activities)相关的所有事件(belongs_to:student):

@activities = Activity.joins(:student).where(student: {student_id: @student.id})

但是我收到此错误:

SQLite3::SQLException: no such column: student.student_id: SELECT "activities".* FROM "activities" INNER JOIN "students" ON "students"."id" = "activities"."student_id" WHERE "student"."student_id" = ?

最佳答案

有什么理由不能这样做吗?:

@activities = @student.activities

您的 Student 类(class)应如下所示:

class Student < ActiveRecord::Base

  has_many :activities

end

如果您希望能够直接从 Activity 类访问学生的事件,我建议使用范围。像这样的东西应该有效:

class Activity < ActiveRecord::Base

  scope :for_student, ->(student)  { where(student_id: student) }

end

您可以通过几种不同的方式使用范围:

# pass in the student directly
@activities = Activity.for_student(@student) 

# pass in the student id
@activities = Activity.for_student(@student.id)

# pass in many students
@activities = Activity.for_student([@student1, @student2])

关于ruby-on-rails - Rails:ActiveRecord::StatementInvalid 在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41433849/

相关文章:

ruby-on-rails - 在动态类型语言(例如 Ruby)中命名变量

css - Rails - 字体路径在生产中有效,但在本地主机上无效

ruby-on-rails - 如何使用 if 在 ruby​​ 中构造 where 子句

ruby-on-rails - 如果记录不存在则创建

ruby-on-rails - 为什么 ruby​​ on rails 4 不重新加载 head 标签中的任何内容

ruby-on-rails - 删除分支中的 Git 文件仍然存在于我的项目目录中

mysql - 查找 "duplicate"记录涉及STI和父子关系的解决方法

arrays - 我什么时候应该使用数组列 vs. rails 协会

javascript - 销毁记录前的额外 "Are you sure?"

html - Rails 应用程序上的奇怪错误,仅在一个浏览器上,一个 url "Below is a rendering of the page up to the first error."