我有两种模式:
数据中心:
class Datacentre < ActiveRecord::Base
has_one :provider
end
和提供者:
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
似乎它正在以相反的方式作出反应?
查看:
- 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 :(得分:1)
您的数据中心模型应如下所示:
class Datacentre < ActiveRecord::Base
belongs_to :provider
end
,它应包含provider_id
。
你认为可以像
一样- Datacenter.order([:name, :country]).each do |c|
...
答案 1 :(得分:0)
您需要在has_one
模块中将belongs_to
更改为Datacentre
。希望它会有所帮助!
答案 2 :(得分:0)
has_one
和has_many
都在关系的所有权方面,但是has_one
指定只能拥有其中一个拥有的东西。他们俩都应该在与belongs_to
的关系的另一端有一个模型。
在您的示例中,您已说过数据中心拥有提供商拥有数据中心的提供商和。它应该是数据中心belongs_to
提供者。
您还需要在Datacentre表中添加provider_id
列。