我有两个具有以下关联的模型:
- 一个用户有多个项目。
- 一个项目属于一个用户。
用户模型(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
最佳答案
您将外键添加到了错误的表中。它应该在 projects
中,而不是在 users
中:
class AddForeignKeyToProjects < ActiveRecord::Migration
def change
add_column :projects, :user_id, :integer
end
end
由于您遵守约定,因此不必在 Project
模型中指定外键。这应该足够了:
belongs_to :user
关于ruby-on-rails-3 - Rails应用程序中belongs_to/has_many关联上的SQLite错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13339425/