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

时间:2013-06-05 00:45:40

标签: ruby-on-rails ruby activerecord

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: Can access _id of a references object but not the object directly

2 个答案:

答案 0 :(得分:1)

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

class User < ActiveRecord::Base
  has_many :organizations, foreign_key: :founder_id

  #...
end

答案 1 :(得分:0)

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