app*_*ief 1 ruby activerecord ruby-on-rails
这应该是一个非常基本的问题,我仍然是ruby的新手,所以我会感激一些帮助.
所以我的db,Source,SourceType和Feed中有3个表.每个Source都属于SourceType,而每个Feed都属于Source.它们的主键是SourceID,TypeID和FeedID
我的Active Record Classes是:
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
Run Code Online (Sandbox Code Playgroud)
我试图从SourceFeed,Stuff from Source和SourceType中选择东西.这是查询:
feed = SourceFeed.select("SourceFeed.FeedID, Source.Name as SourceName, SourceType.Name as SourceType").joins(:Source, :SourceType).where(:FeedID => FeedID).first
Run Code Online (Sandbox Code Playgroud)
我收到了Association named 'SourceType' was not found; perhaps you misspelled it?错误
如果我从联接中删除它,我收到一个Unknown column 'SourceType.Name' in 'field list'错误.
什么是正确的方法呢?
谢谢
PS:我的数据库不遵循活动记录命名约定,但我不能改变我正在使用现有数据库.
尝试更改连接参数
.joins(:Source, :SourceType)
Run Code Online (Sandbox Code Playgroud)
至
.joins(:Source => :SourceType)
Run Code Online (Sandbox Code Playgroud)
此外,应该提到的是,您的关联名称应该在您的模型定义中小写.
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |