2012-11-27 57 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