ruby-on-rails-3 - Rails应用程序中belongs_to/has_many关联上的SQLite错误

标签 ruby-on-rails-3 sqlite associations

我有两个具有以下关联的模型:

  • 一个用户有多个项目。
  • 一个项目属于一个用户。

用户模型(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/

相关文章:

database - SQLite3 的线程安全性如何?

objective-c - 扩展 NSMutableArray 以进行双向关联管理

javascript - Paypal Embedded Flow 不使用 returnUrl 或 cancelUrl

android - SQLite TEXT 比较不适用于附加的数据库

ruby-on-rails - 在下拉列表中显示辅助方法的值

java - 从数据库获取数据与从 HashMap 获取数据

javascript - "item_translation is not associated to item!" Sequelize 错误

postgresql - 如何删除 Azure 中 Microsoft.DBforPostgreSQL/flexibleServers 的服务关联链接

ruby-on-rails - 如何在生产环境中启动乘客?

ruby-on-rails-3 - Rails3 SSL 路由问题