rails 3.0アプリケーションをrails 4.0にアップグレードしようとしています。私が気づいた行動の1つは、モデル間の関係が機能しなくなったことです。Rails 4 Has_many:selectとの結合関係
は、我々は次のモデルがあるとします。
class Student < ActiveRecord::Base
has_many :teacher_students
has_many :teachers, :through => :teacher_students, :select => 'teacher_students.met_with_parent, teachers.*'
# The Rails 4 syntax
has_many :teachers, -> { select('teacher_students.met_with_parent, teachers.*') }, :through => :teacher_students
end
class Teacher < ActiveRecord::Base
has_many :teacher_students
has_many :students, :through => :teacher_students, :select => 'teacher_students.met_with_parent, students.*'
end
class TeacherStudent < ActiveRecord::Base
belongs_to :teacher
belongs_to :student
# Boolean column called 'met_with_parent'
end
は、今では行うことができます:
teacher = Teacher.first
students = teacher.students
students.each do |student|
student.met_with_parent # Accessing this column which is part of the join table
end
これはRailsの3.0のために働いていたが、現在はRailsの4.0に私はRailsのを信じてUnknown column 'met_with_parent' in 'field list'
を取得しています4はスマートで、与えられた結合表全体をロードしないようにしようとしています。
古い構文はRails 4.0で機能しますか? – lurker
@mbratchいいえうまくいきません。同じ問題が発生します。古い構文では、Rails 4は一連の非推奨メッセージを記録します。 – Bill
teacher_students.met_with_parentをmet_with_parentとして選択しようとするとどうなりますか? – faron