这应该是一个非常基本的问题,我对ruby还是个新手,所以我会感谢一些帮助。Ruby ActiveRecord 2级别加入
所以我有3个表在我的数据库,源,SourceType和饲料。每个源都属于一个SourceType,每个源都属于一个源。他们的主键的SourceID,TYPEID和FeedID
我的Active Record类是:
class SourceFeed < ActiveRecord::Base
self.table_name = "SourceFeed"
self.primary_key = "FeedID"
belongs_to :Source,
:foreign_key => "SourceID",
:class_name => "Source",
:include => "SourceType"
end
class Source < ActiveRecord::Base
self.table_name = "Source"
self.primary_key = "SourceID"
has_many :SourceFeeds,
:primary_key => "SourceID",
:class_name => "SourceFeed"
belongs_to :SourceType,
:foreign_key => "TypeID",
:class_name => "SourceType"
end
class SourceType < ActiveRecord::Base
self.table_name = "SourceType"
self.primary_key = "TypeID"
has_many :Source,
:primary_key => "TypeID",
:class_name => "Source"
end
我试图从SourceFeed,东西从来源和SourceType中选择的东西。这里的查询:
feed = SourceFeed.select("SourceFeed.FeedID, Source.Name as SourceName, SourceType.Name as SourceType").joins(:Source, :SourceType).where(:FeedID => FeedID).first
我得到一个错误Association named 'SourceType' was not found; perhaps you misspelled it?
如果我删除它从加入时,我得到一个Unknown column 'SourceType.Name' in 'field list'
错误。
什么是正确的做法?
感谢
PS:我的数据库不遵循活动记录的命名约定,但我无法改变,我与现有的DB工作。
它的工作感谢:)第二个连接应该读'连接(“JOIN源类型在SourceType.TypeID = Source.TypeID”)' – applechief 2012-03-08 14:54:32