Rails的5 PostgreSQL的的has_many,我这里有3种型号通过我的应用程序关联
class User < ApplicationRecord
has_many :specialties, class_name: "Specialty",
foreign_key:"teacher_id",
dependent: :destroy
has_many :subjects, through: :specialties, source: :subject
class Specialty < ApplicationRecord
belongs_to :teacher, class_name: "User"
belongs_to :subject, class_name: "Subject"
class Subject < ApplicationRecord
has_many :teachers, through: :specialties, source: :teacher
has_many :specialties, class_name: "Specialty",
foreign_key:"subject_id",
dependent: :destroy
在我的rails控制台,以前当我使用的SQLite我有 user = User.first
没有问题,那么user.subjects
将返回我的所有用户科目。 但是经过我已经改变到PostgreSQL,它返回我
ActiveRecord::StatementInvalid: PG::UndefinedFunction: ERROR: operator does not exist: integer = character varying
LINE 1: ...ects" INNER JOIN "specialties" ON "subjects"."id" = "special...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT "subjects".* FROM "subjects" INNER JOIN "specialties" ON "subjects"."id" = "specialties"."subject_id" WHERE "specialties"."teacher_id" = $1
有什么方法可以让我做回了user.subjects? 我注意到,在遵循和遵循rails教程模型时没有发生这个问题。 (Twitter的模型)
谢谢
编辑,特色菜是不是一个整数列,我要改变它,回来非常感谢!
'“特色菜”,“subject_id”“ - 这是一个整数列? – dp7
哦,它不是! ,我下班后要把它放好。谢谢!! – Holmes
't.string:subject_id' - 它是** String **类型,外键的类型应与您的主键相同,否则在比较它们时会出现类型转换错误 – dp7