J'essaye d'obtenir ce qui devrait être une jointure de table de base pour fonctionner. C'est la première fois que je travaille avec des bases de données, il y a de fortes chances pour que je manque quelque chose de simple. J'utilise Rails 3.2.13.Simple Rails Join Exemple
J'ai deux tables. Le premier est les flux, et il contient une liste de flux rss et plusieurs autres caractéristiques comme une balise. La seconde est feed_entries et contient des histoires individuelles. La colonne feed_entries.feed_name correspond aux éléments de la colonne feeds.name. Voici les fichiers de modèle:
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
Je ne comprends pas foreign_key et primary_key, mais en fonction de ce que je l'ai lu, je pense qu'ils sont mis en place correctement.
Actuellement, je peux présenter toutes les entrées d'un certain flux avec FeedEntry.where (feed_name: 'BBC') ou similaire. J'essaie de présenter les entrées qui correspondent à certaines colonnes dans la table des flux, comme tag = Daily. J'ai essayé ces commandes:
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
La première donne une erreur car il n'y a pas feed_entries.tag (c'est une colonne dans les aliments). La seconde ne renvoie aucune entrée. Le troisième renvoie le nombre correct d'entrées, mais seulement les colonnes présentes dans la table de flux, pas la plus importante table feed_entries.
Quelqu'un peut-il expliquer ce qui me manque?