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') 或类似内容呈现某个提要的所有条目。我正在尝试显示与提要表中某些列匹配的条目,例如 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_entries 表。

谁能解释我错过了什么?

4

1 回答 1

1

我能发现的一个问题是关系本身。看看你的 FeedEntry 模型......

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

...外键应该是'feed_name'

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

希望这可以帮助!

于 2013-07-09T11:32:35.303 回答