Я пытаюсь получить то, что должно быть базовым соединением таблицы для работы. Это мой первый опыт работы с базами данных, поэтому есть хорошие шансы, что я пропущу что-то простое. Я использую 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.
Может ли кто-нибудь объяснить, что мне не хватает?