J'ai 2 modèles:Ruby on Rails, modèle Rejoint
class Video < ActiveRecord::Base
belongs_to :categories, :foreign_key => "category", :class_name => "Category"
end
class Category < ActiveRecord::Base
has_many :videos
end
Cela est bien jusqu'à présent, dans mon contrôleur de vidéos pour la page d'index je:
def index
@videos = Video.all(:joins => :categories)
etc, etc
end
Le produit ci-dessus les éléments suivants requête SQL: SELECT * FROM videos
videos
INNER JOIN categories
SUR categories
.id = videos
.category
Whi. ch est bien jusqu'à un certain point, fondamentalement je dois obtenir le nom de la catégorie (un champ dans cette table) de cette façon, je n'ai pas besoin de faire un autre appel dans la vue pour obtenir le nom de catégorie basé sur l'identifiant de la catégorie. Des idées?
Merci, et oui je suis nouveau à ruby, j'ai essayé de lire l'API mais je n'y ai pas trouvé beaucoup d'aide.
Quand je fais, les modifications de la requête à: SELECT * FROM 'videos' Aucun rejoindre ou rien, qui est en fait la façon dont je l'avais avant et il n'a jamais travaillé ... :( –
Voir ma réponse éditée –
Merci John, la raison pour laquelle j'ai le: class_name et le renommer en: categories, est que si je ne le fais pas, quand j'édite, j'obtiens l'erreur suivante: ActiveRecord :: AssociationTypeMismatch dans VideosController # update Catégorie (# 2175068700) expected, got Chaîne (# 2148246520) La seule façon J'ai trouvé pour contourner cela était en faisant ce qui précède .... Je pense que j'ai trop gros désordre sur mes mains lol. –