我正在努力获得应该成为基本表连接的工作。这是我第一次使用数据库,所以我很有可能错过了一些简单的东西。我正在使用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表。
任何人都可以解释我缺少的东西吗?
答案 0 :(得分:1)
belongs_to :feed, foreign_key: "name", primary_key: "name"
...外键应为'feed_name'
belongs_to :feed, foreign_key: "feed_name", primary_key: "name"
希望这有帮助!