2013-05-31 168 views
0

我有兩個型號:Rails的模型關係,HAS_ONE或belongs_to的

數據中心:

class Datacentre < ActiveRecord::Base 

    has_one :provider 

end 

和Provider:

class Provider < ActiveRecord::Base 

    has_many :datacentres 

end 

,並在數據中心表我有provider_id然而,當我嘗試在視圖中顯示我得到這個:Mysql2::Error: Unknown column 'providers.datacentre_id' in 'where clause': SELECT 'providers'.* FROM 'providers' WHERE 'providers'.'datacentre_id' = 262 LIMIT 11

我t好像是以相反的方式做出反應?

查看:

- Datacentre.find(:all, :order => " name ASC, country ASC", :conditions => "").each do |c| 

    %tr 
    %td= c.name 
    %td= c.provider.name 
    %td= c.country 
    %td 
     = c.address    
     = c.postcode 
+0

檢查「datacentre_id」列存在於供應商表與否。 –

+0

不應該有在供應商表中的列datacentre_id作爲一個供應商可以有很多的數據中心 – user1738017

回答

1

您的數據中心模型應該是這樣的:

class Datacentre < ActiveRecord::Base 
    belongs_to :provider 
end 

,它應該包含provider_id

您查看可以LOOL像

- Datacenter.order([:name, :country]).each do |c| 
... 
0

您需要Datacentre模塊改變has_onebelongs_to。希望它會有幫助!

+0

我已經改變了這一點,但後來我得到這個錯誤:'未定義的方法「名」的零:NilClass' – user1738017

+0

的問題是在這行:'%td = c.provider.name'您正在嘗試使用提供程序列來查找'Datacentre',但是您需要使用'id == provider_id'在'providers'表中找到'Provider'名稱。 –

+0

但我想顯示所有的數據中心,即使他們沒有提供者鏈接到他們 – user1738017

0

has_onehas_many都在關係的所有權方面,但has_one指定只能有一個擁有的東西。他們兩個都應該在與belongs_to的關係的另一端有一個模型。

在您的示例中,您曾說過,Datacentre擁有供應商擁有Datacentre的供應商。它應該是提供商的數據中心belongs_to

您還需要Datacentre表中的provider_id列。

+0

我已經改變了這一點,但後來我得到這個錯誤:未定義的方法'名稱'爲零:NilClass' – user1738017