2

次の関連付けを持つ2つのモデルがあります。

  • ユーザーには多くのプロジェクトがあります。
  • プロジェクトはユーザーに属しています。

ユーザーモデル(user.rb):

 class User < ActiveRecord::Base
   has_many :projects
   attr_accessible :available, :department, :name, :skills, :title, :photo
 end

プロジェクトモデル(project.rb):

class Project < ActiveRecord::Base
  belongs_to :user, :foreign_key => :user_id
  attr_accessible :project_name
end

外部キー移行ファイル:

class AddForeignKeyToUsers < ActiveRecord::Migration
  def change
    add_column :users, :user_id, :integer
  end
end

電話をかける<%= @user.projects %>と、次のエラーメッセージが表示されます。

SQLite3::SQLException: no such column: projects.user_id: SELECT "projects".* FROM "projects"  WHERE "projects"."user_id" = 2
4

1 に答える 1

2

間違ったテーブルに外部キーを追加しました。projectsではなく、にある必要がありますusers

class AddForeignKeyToProjects < ActiveRecord::Migration
  def change
    add_column :projects, :user_id, :integer
  end
end

Project規則に固執しているので、モデルで外部キーを指定する必要はありません。これで十分です:

belongs_to :user
于 2012-11-12T07:02:19.220 に答える