0

Resumes と Educations の間には多対多の関係があり、同じ教育項目を複数の履歴書に表示することができます。履歴書に学歴を表示する場合、その特定の履歴書に対して学歴を注文する必要があります。これを行うために、注文情報をプロパティとして持つ結合テーブル Educations_Resumes を設定します。

ただし、resume.educations などを試してみると、次のエラーが発生します。

ActiveRecord::StatementInvalid: SQLite3::SQLException: near "order": syntax error: 
SELECT "educations".* FROM "educations" INNER JOIN "educations_resumes" ON 
"educations"."id" = "educations_resumes"."education_id" WHERE 
"educations_resumes"."resume_id" = 2 ORDER BY educations_resumes.order

モデルは次のように設定されています。

class Resume < ActiveRecord::Base
  has_many :educations_resumes
  has_many :educations, :through => :educations_resumes,
           :order => 'educations_resumes.order'

end

class EducationsResume < ActiveRecord::Base
  belongs_to :resume
  belongs_to :education
end

class Education < ActiveRecord::Base
  has_many :educations_resumes
  has_many :resumes, :through => :educations_resumes
end

正しく履歴書を注文する方法についての提案は大歓迎です。

4

1 に答える 1

0

列名としてキーワードを使用しています:

http://www.sqlite.org/lang_keywords.html

移行を実行し、列名を変更します。

rails g migration FixColumnName

これにより、空の移行ファイルが得られ、次のように入力する必要があります。

class FixColumnName < ActiveRecord::Migration
  def change
    rename_column :educations_resumes, :order, :ordering
  end
end
于 2013-03-19T02:13:36.173 に答える