Requête SQL personnalisée sans table correspondante
J'ai une requête SQL qui n'est pas spécifique aux tables et je ne sais pas comment le gérer avec Ruby on Rails.
Voici ma requête SQL (vous n'avez pas besoin de le comprendre):
SÉLECTIONNER le type, actor_id, des événements.created_at, photo_id, photos.user_id DE (SÉLECTIONNEZ "commentaire" en tant QUE type, user_id COMME actor_id, created_at, photo_id DE commentaires UNION SÉLECTIONNEZ "classement" en tant QUE type, user_id COMME actor_id, created_at, photo_id DE classifications) COMME les événements INNER JOIN photos SUR photo_id = photos.id OÙ user_id = #{@user.id} COMMANDE PAR created_at DESC LIMITE de 9
J'ai essayé de créer un modèle et utiliser un find_by_sql:
class RecentActivity ActiveRecord::Base
attr_accessor :type, :actor_id, :created_at, :photo_id, :user_id
end
J'obtiens:
Mysql::Erreur: Table 'mysite_development.recent_activities' n'existe pas: AFFICHER les CHAMPS DE `recent_activities`
Comment puis-je éviter ce message? Est-il une solution alternative?
source d'informationauteur collimarco
Vous devez vous connecter pour publier un commentaire.
Vous pouvez saisir une connexion db directement à partir de ActiveRecord::Base, mais ce n'est pas aussi utile que l'extension AR::Base, parce que les méthodes utiles comme sanitize_sql sont protégés.
Vous pouvez également saisir le ActiveRecord de connexion et d'appel select_all:
Si vous voulez créer des classes (modèles) qui ne sont pas de la sauvegarde d'une base de données vous avez besoin pour pas qu'ils sont héritiers de ActiveRecord.
Ne
Au lieu de
Cela étant dit, il pourrait être utile d'avoir quelques informations sur ce que vous essayez de le faire: par exemple, si vous voulez avoir quelque chose comme "commentaires" ou "photos" sur plusieurs choses différentes comme un article, ou quelqu'un profil ou un billet de blog tous au sein de la même application, je vous recommande de vérifier Polymorphes Associations.