没有具有belongs_to class_name关系的此类列

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

我已经设置了这样的模型:

用户:

User has_many :organizations

组织:

 attr_accessible :name, :founder, :founder_id belongs_to :founder, :class_name => 'User' 

架构:

 create_table "organizations", :force => true do |t| t.string "name" t.integer "founder_id" 

当我在rails-admin中编辑用户时,我收到以下消息:

 `SQLite3::SQLException: no such column: organizations.user_id: SELECT "organizations".* FROM "organizations" WHERE "organizations"."user_id" = 2` 

我想在组织上访问创始人,其中创始人是用户。 看起来rails_admin在寻找创始人时会查找user_id。

上一个q: 可以直接访问引用对象的_id但不能访问该对象

您需要指定从User检索组织时要使用的列,如下所示:

 class User < ActiveRecord::Base has_many :organizations, foreign_key: :founder_id #... end 

组织模型属于User,因此rails将自动使用User的小写类名+ _id(user_id)作为foreign_key。 由于您的组织模型没有user_id而没有founder_id,因此您需要明确指定founder_id为foreign_key。