简单的Rails加入示例

时间:2013-07-09 10:41:28

标签: ruby-on-rails join

我正在努力获得应该成为基本表连接的工作。这是我第一次使用数据库,所以我很有可能错过了一些简单的东西。我正在使用Rails 3.2.13。

我有两张桌子。第一个是feed,它包含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的所有条目。我正在尝试显示与供稿表中某些列匹配的条目,例如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 个答案:

答案 0 :(得分:1)

我可以发现的一个问题是关系本身。看一下FeedEntry模型...

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

...外键应为'feed_name'

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

希望这有帮助!

相关问题