为什么Rails认为Model属性是一种方法?

时间:2016-09-22 21:16:29

标签: ruby-on-rails activerecord rake-task

这是一个自定义rake任务文件,如果这有所不同。

我想从Pupil中提取所有user_id,然后应用它们来获取所有学生的User.id.

很高兴用正确的user_id打印出第2行,但后来考虑了user_id a'方法'在第3行打破。为什么?我的错误在哪里?

        course_pupils = Pupil.where(course_id: study.course_id)
        course_pupils.map { |a| puts a.user_id }
        pupils = User.where(id: course_pupils.user_id )

2 个答案:

答案 0 :(得分:1)

当你在第3行调用它时,

course_pupils仍然是一种关系。第2行是非破坏性的(如果是,它会把它变成nils数组,因为puts返回nil)。

你需要这样做:

pupils = User.where(id: course_pupils.pluck(:user_id) )

或类似的东西

答案 1 :(得分:1)

你做错了,你不能在集合上调用实例方法user_id,试试这个

user_ids = Pupil.where(course_id: study.course_id).pluck(:user_id)
pupils = User.where(id: user_ids )

希望有所帮助!