0
我正在将rails3应用升级到3.2.6 我对带有选项的不推荐的default_scope有一些问题。default_scope with:include option rails 3.2
我有几个模型的活动和网站,通过campaign_sites与许多关系。
class Campaign < ActiveRecord::Base
has_many :campaign_sites, :dependent => :destroy
....
end
class Site < ActiveRecord::Base
has_many :campaign_sites, :dependent => :destroy
has_many :campaigns, :through => :campaign_sites
...
end
class CampaignSite < ActiveRecord::Base
default_scope :include => [:campaign, :site], :order => :'sites.name'
belongs_to :campaign, :touch => true
belongs_to :site, :touch => true
...
end
这是工作正常与rails 3.0.10但升级到3.2.6后,我得到以下mysql错误与此行。
default_scope :include => [:campaign, :site], :order => :'sites.name'
Mysql2::Error: Unknown column 'sites.name' in 'order clause': SELECT `campaigns`.* FROM`campaigns` INNER JOIN `campaign_sites` ON `campaigns`.`id` = `campaign_sites`.`campaign_id` WHERE `campaign_sites`.`site_id` = 11377 ORDER BY campaigns.name, sites.name
我试着用':include'在3.2.6和它的作品。很可能,数据库结构存在问题。 –
@WawaLoo,我甚至用:joins =>:sites,但它没有奏效。你能提供关于你正在谈论的db结构的更多信息吗? – venkatareddy
它仍然会产生相同的SQL吗? –