2012-11-27 58 views
0

我有模型生产商,公司和用户导轨有一个关联问题

我想要一个生产者和一个公司都有一个用户。属于公司的用户只属于该公司。属于生产者的用户只属于该生产者。

这样的表我想是这样

productor   company    user 
---------   --------    ------ 
id     id      id 
name    name     email 
user_id    user_id    password 

我试着用HAS_ONE协会这样做,但我得到这个错误

no such column: users.produtor_id: SELECT "users".* FROM "users" WHERE "users"."produtor_id" = 1 LIMIT 1 

和我的模型如下

class Produtor < ActiveRecord::Base 

    attr_accessible :borndate, :cpf_cnpj, :is_company, :name, :rg 
    has_one :user 
    ... 


class User < ActiveRecord::Base 
    attr_accessible :email, :password 
    ... 
end 
+0

是,源代码的实际拷贝?因为你有“生产者”拼写错误。可能是问题的一部分。 –

+0

这不是问题..因为我是巴西人,并且让你理解 – thiagoh

回答

1

我觉得你有has_one和belongs_to混在一起。

看看它是一个属于或HAS_ONE协会here

你所拥有的列:

class Productor < ActiveRecord::Base 
    belongs_to :user, :inverse_of => :productor 
end 

class Company < ActiveRecord::Base 
    belongs_to :user, :inverse_of => :company 
end 

class User < ActiveRecord::Base 
    has_one :productor, :inverse_of => :user 
    has_one :company, :inverse_of => :user 
end 
+0

是否需要手动创建列:productor_id和:company_id,或者钢轨是否适合我? – thiagoh

+0

另一件事..它是生产者有一个用户不反相..所以做has_one应该在生产者? – thiagoh

+1

has_one和belongs_to都表示1对1的关系,区别在于foreign_key的声明位置。您的表格在制作者和公司中拥有user_id,因此您将声明这些模型,如我所示。为了强制用户只有生产者或公司需要一些自定义验证。 –

-1

您是否在用户模型中创建了关联?

class User < ActiveRecord::Base 
    attr_accessible :email, :password 
    belongs_to :productor 
    ... 
end 
+0

的问题,请阅读这个问题!如果我这样做表格用户将有productor_id – thiagoh

+0

你是对的。如上所示,他们混在一起。 – NicSlim