2015-05-27 90 views
1

我有用户模型和组织模型。 组织有一个用户,一个用户属于一个组织。rails has_one和belongs_to错误

模式:

create_table "organizations", force: true do |t| 
    t.string "name" 
    t.string "org_name" 
    t.string "email" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "user_id" 
    end 


class Organization < ActiveRecord::Base 
    has_one :user 
end 

class User < ActiveRecord::Base 
    belongs_to :user 
end 

当我创建的轨道控制台的组织,我得到以下错误(A = User.last)

» Organization.create user_id: a.id, org_name: 'crap' 
    (0.3ms) BEGIN 
    SQL (0.9ms) INSERT INTO "organizations" ("created_at", "org_name", "updated_at", "user_id") VALUES ($1, $2, $3, $4) RETURNING "id" [["created_at", "2015-05-27 15:37:45.009037"], ["org_name", "crap"], ["updated_at", "2015-05-27 15:37:45.009037"], ["user_id", 42]] 
    (1.3ms) COMMIT 
=> #<Organization:0x000001036de710> { 
      :id => 8, 
     :name => nil, 
     :email => nil, 
    :org_name => "crap", 
    :created_at => Wed, 27 May 2015 16:37:45 BST +01:00, 
    :updated_at => Wed, 27 May 2015 16:37:45 BST +01:00, 
    :user_id => 42 
} 
[21] video » Organization.last.user 
    Organization Load (1.3ms) SELECT "organizations".* FROM "organizations" ORDER BY "organizations"."id" DESC LIMIT 1 
PG::UndefinedColumn: ERROR: column users.organization_id does not exist 
LINE 1: SELECT "users".* FROM "users" WHERE "users"."organization_... 
              ^
: SELECT "users".* FROM "users" WHERE "users"."organization_id" = $1 LIMIT 1 
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column users.organization_id does not exist 
LINE 1: SELECT "users".* FROM "users" WHERE "users"."organization_... 
              ^
: SELECT "users".* FROM "users" WHERE "users"."organization_id" = $1 LIMIT 1 
from /Users/batman/.rvm/gems/ruby-2.1.1/gems/activerecord-4.1.4/lib/active_record/connection_adapters/postgresql_adapter.rb:869:in `prepare' 
[22] video » User.last.organization 
    User Load (1.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1 
=> nil 

我不知道为什么没有按协会不存在...!

+2

请交换关系后再试。例如user.rb模型中的has_one:organization'和组织模型中的belongs_to:user'。 –

+0

对我自己生气,你是对的! –

+0

它适合你吗? –

回答

1

我认为交换关联将解决您的问题。

class Organization < ActiveRecord::Base 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_one :organization 
end