2013-07-09 5 views
0

Я пытаюсь получить то, что должно быть базовым соединением таблицы для работы. Это мой первый опыт работы с базами данных, поэтому есть хорошие шансы, что я пропущу что-то простое. Я использую Rails 3.2.13.Простые Rails Присоединиться Пример

У меня есть две таблицы. Первый - это фиды, и он содержит список 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 (имя_корпорации: '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.

Может ли кто-нибудь объяснить, что мне не хватает?

ответ

1

Один вопрос, который я могу определить, касается самой связи. Посмотри на модели FeedEntry ...

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

... внешний ключ должен быть '' FEED_NAME

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

Надеется, что это помогает!

Смежные вопросы