0

この関係でエラーがどこにあるのかわかりません:

class Education < ActiveRecord::Base
  attr_accessible :description, :graduation, :student_id, :faculty_id, :department_id

  has_one :faculty
  belongs_to :student
end
#  id          :integer          not null, primary key
#  student_id  :integer
#  faculty_id  :integer
#  description :text
#  graduation  :string(255)

class Faculty < ActiveRecord::Base
  attr_accessible :department_id, :name

  belongs_to :education
  belongs_to :department
end

# == Schema Information
#
# Table name: faculties
#
#  id            :integer          not null, primary key
#  name          :string(255)
#  department_id :integer

なぜテーブルに追加education_idする必要があるのですか? faculties各教育機関には 1 つの学部しかなく、多くの教育機関に属しています。

>> Education.last.faculty
  Education Load (0.3ms)  SELECT "educations".* FROM "educations" ORDER BY "educations"."id" DESC LIMIT 1
  Faculty Load (0.2ms)  SELECT "faculties".* FROM "faculties" WHERE "faculties"."education_id" = 1 LIMIT 1
SQLite3::SQLException: no such column: faculties.education_id: SELECT  "faculties".* FROM "faculties"  WHERE "faculties"."education_id" = 1 LIMIT 1
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: faculties.education_id: SELECT  "faculties".* FROM "faculties"  WHERE "faculties"."education_id" = 1 LIMIT 1
from /Users/rege/.rvm/gems/ruby-1.9.3-p194@ckdatabase/gems/sqlite3-1.3.6/lib/sqlite3/database.rb:91:in `initialize'
4

2 に答える 2

2

「belongs_to」を配置した側には、常に関連付けられたオブジェクトの ID があります。これは定義によるものです。あなたが属している場合、別のインスタンスにも属していません。

各 Education に 1 つの教員だけを配置する場合は、次の 2 つの方法があります。

  • use a one-to-one : 学部に教育を 1 つだけ持たせたい場合
  • 1 対多で belongs_to を使用します: 各学部に複数の教育を持たせたい場合

したがって、代わりにこれを試すことができます:

class Education < ActiveRecord::Base
  attr_accessible :description, :graduation, :student_id, :faculty_id, :department_id

  belongs_to :faculty
  belongs_to :student
end

class Faculty < ActiveRecord::Base
  attr_accessible :department_id, :name

  has_many :education
  belongs_to :department
end
于 2012-11-06T00:26:25.033 に答える
1

あなたの関係は少しめちゃくちゃだと思います-公式ドキュメントが役立つかもしれません.

あなたがやろうとしていることを私が理解したら、次のようなものが必要です(あなたの学部/教育関係に関して):

class Education < ActiveRecord::Base
  attr_accessible :description, :graduation, :student_id, :faculty_id, :department_id

  belongs_to :faculty # foreign key - faculty_id
  belongs_to :student
end
#  id          :integer          not null, primary key
#  student_id  :integer
#  faculty_id  :integer
#  description :text
#  graduation  :string(255)

class Faculty < ActiveRecord::Base
  attr_accessible :department_id, :name

  has_many :educations
  belongs_to :department
end
于 2012-11-06T00:25:38.043 に答える