2013-07-09 43 views
0

我想要得到什麼應該是一個基本的表連接工作。這是我第一次使用數據庫,所以我很有可能錯過簡單的東西。我使用的是Rails 3.2.13。簡單的軌道加入示例

我有兩個表。第一個是提要,它包含rss提要列表和其他幾個特徵,如標籤。第二個是feed_entries,它包含單獨的故事。 feed_entries.feed_name列與列feeds.name中的元素匹配。下面是模型文件:

class Feed < ActiveRecord::Base 
    attr_accessible :color, :lastUpdated, :name, :posted, :read, :tag, :url 
    has_many :feed_entries, foreign_key: "feed_name", primary_key: "name" 
end 

class FeedEntry < ActiveRecord::Base 
    attr_accessible :guid, :name, :published_at, :status, :summary, :url 
    belongs_to :feed, foreign_key: "name", primary_key: "name" 
end 

我不明白foreign_key和primary_key,但基於我讀過,我認爲他們是正確設置。

目前,我可以使用FeedEntry.where(feed_name:'BBC')或類似文件提供某些Feed的所有條目。我試圖呈現與Feed表中某些列匹配的條目,如tag = Daily。我試過這些命令:

Feed.joins(:feed_entries).where("feed_entries.tag = ?", 'Daily') #error 
FeedEntry.joins(:feed).where("feeds.tag = ?", 'Daily') #empty 
Feed.joins(:feed_entries).where(tag: 'Daily') #no columns from feed_entries 

第一個給出錯誤,因爲沒有feed_entries.tag(它是Feed中的一列)。第二個不返回任何條目。第三個返回正確數量的條目,但只返回feed表中的列,而不是更重要的feed_entries表。

任何人都可以解釋我錯過了什麼嗎?

回答

1

我可以發現的一個問題是關係本身。看看你的FeedEntry模型......

belongs_to :feed, foreign_key: "name", primary_key: "name" 

...外鍵應該是 'FEED_NAME'

belongs_to :feed, foreign_key: "feed_name", primary_key: "name" 

希望這有助於!