9
votes

Qu'est-ce que RUBY ON RAILS ORM en termes de layman? S'il vous plaît, expliquez

J'ai du mal à comprendre l'orje dans Ruby sur des rails. De ce que je comprends, il y a une relation 1: 1 entre les tables / colonnes et les objets / attributs. Donc, chaque enregistrement est un objet. Aussi ce qui est exactement un modèle? Je sais qu'il mappe sur une table.

Ce que je suis vraiment après est une compréhension plus profonde de ce qui précède. Merci d'avance pour votre aide

Je suis un développeur Web qui va de PHP à Ruby sur des rails.


0 commentaires

7 Réponses :


0
votes

1: 1 n'est pas tout à fait correct, car il y a INSPACE DE CONDITION DE L'OBJECTIVE MisMatch .


0 commentaires

1
votes

Le Définition de Wikipedia:

Cartographie relative à l'objet (ORM, O / RM, et mappage O / R) dans un logiciel informatique est une technique de programmation pour Conversion des données entre incompatibles Systèmes de type dans des bases de données relationnelles et programmation orientée objet Langues. Cela crée, en vigueur, un "Base de données d'objet virtuel" qui peut être utilisé depuis la programmation Langue.

d'une vue PHP, il sera de la manière suivante (par exemple)

  1. Connectez-vous à la base de données et obtenez une ligne de la table des messages.
  2. Tournez cette ligne à un objet avec des attributs comme ceux des colonnes de table.
  3. Si les messages ont des commentaires dans les commentaires Tableau, vous pouvez également faire des fichiers post.com et vous obtenez également les commentaires comme un éventail d'objets également.

    Vous pouvez définir des relations entre les tables telles que dire: Posts Has_many Commentaires, un commentaire appartient à un post et ainsi.

    Si fondamentalement, vous ne travaillez pas avec des lignes de base de données, vous transformez ces lignes et leurs relations avec des objets avec des relations de composition ou de héritage.


0 commentaires

1
votes

Il y a deux pièces ici: le motif MVC de ORM et rails. Orm est court pour "cartographie relationnelle", et il fait à peu près ce qu'il est dit: il mesure que les tables de votre base de données sont des objets avec lesquels vous pouvez travailler.

MVC est court pour "contrôleur de vue de modèle", le motif qui décrit la manière dont les rails allument le comportement de votre domaine et les représentations d'objet dans des pages utiles. Le modèle MVC tombe en trois morceaux:

  • modèles contient une définition de quel objet dans votre domaine représente et comment elle est liée à d'autres modèles. Il décrit également la manière dont les champs et les relations représentées dans la carte d'objet pour soutenir les magasins (tels qu'une base de données). Notez que, en soi, il n'y a rien à propos d'un modèle qui prescrit que vous devez utiliser un orje particulier (ou même un ormes du tout).

  • contrôleurs Spécifiez comment les modèles doivent interagir les uns avec les autres pour produire des résultats utiles en réponse à une demande de l'utilisateur.

  • vues Prenez les résultats créés par des contrôleurs et les rendent de la manière souhaitée. (Au moment où vous arrivez à votre vue, vous devez surtout savoir ce qui est rendu, et il devrait y avoir très peu de comportement.)


0 commentaires

15
votes

orm in rails est une implémentation du enregistrement actif modèle De Martin Fowler's schémas d'architecture d'applications d'entreprise livre. En conséquence, le cadre Orm Rails est nommé Activerecord.

L'idée de base est qu'une table de base de données est enveloppée dans une classe et une instance d'un objet correspond à une seule ligne de cette table. La création d'une nouvelle instance ajoute donc une ligne à la table, la mise à jour de l'objet met à jour la ligne, etc. La classe wrapper implémente les propriétés de chaque colonne de la table. Dans ActionCord, ces propriétés sont disponibles automatiquement à l'aide de la métaprogramming Ruby sur la base du schéma de base de données. Vous pouvez remplacer ces propriétés si nécessaire si vous devez introduire une logique supplémentaire. Vous pouvez également ajouter des "em> les attributs virtuels , qui n'ont pas de colonne correspondante dans la table de base de données sous-jacente.

rails est un Modèle-View- Contrôleur (MVC), donc un modèle de rails est le M en MVC. En plus d'être la classe Wrapper Activerecord décrite ci-dessus, il contient une logique commerciale, y compris la logique de validation implémentée par le module de validation de ActionCord.

lecture supplémentaire


0 commentaires

1
votes

en termes de layman.

  • Un rails modèle est proxy à une table dans la base de données. Ces modèles se trouvent des classes rubis.
  • Les objets de ces classes sont des procurations aux lignes de la table dont ce modèle est un proxy.
  • Enfin, les attributs de ces objets sont des procurations aux données de la colonne pour cette ligne particulière.

    ci-dessus est en fait les rails activeCord orm.


2 commentaires

Un modèle n'est pas nécessairement une table dans la base de données. Seuls les modèles basés sur Aciverecord sont.


Oui bien sûr. La plupart du temps, un modèle Rails est un modèle basé sur Activerecord. Il existe en effet des modèles non actifs-record-enregistrés également dans des rails. Voir: railscasts.com/episodes/121-non-active-record-model < / a>



25
votes

"De ce que je comprends, il existe une relation 1: 1 entre les tables / colonnes et les objets / attributs. Donc, chaque enregistrement est un objet."

Ce n'est pas exactement correct, sauf si vous utilisez le terme "objet" très vaguement. Les tables sont modélisées par classes , tandis que la table enregistrements sont modélisées par instances de ces classes .

Disons que vous ayez un Clients Tableau, avec Colonnes ID (Autonum) et Nom (VARCHAR). Disons que cela n'a qu'un enregistrement, ID = 1 et un nom = "Ford". Alors:

  • La table de dB Clients dans la case de la classe de modèle Client .
  • L'enregistrement planera dans un modèle instance , ce qui signifie que vous devez créer l'objet et l'attribuer à une variable afin de travailler avec l'enregistrement. La manière la plus courante serait de faire ford = client.find (1)
  • Les deux colonnes de la table planeront des méthodes de la variable Ford . Vous pouvez faire ford.id et vous obtiendrez 1. Vous pouvez faire Ford.name et vous obtiendrez la chaîne "Ford". Vous pouvez également modifier le nom du client en effectuant Ford.name = "Chevrolet" , puis commettre les modifications de la base de données en faisant Ford.Save.

    "Aussi quel est exactement un modèle? Je sais qu'il est mappée sur une table"

    Les modèles ne sont que des classes avec lots de méthodes très utiles pour manipuler votre base de données. Voici quelques exemples:

    • validations : Outre les validations typiques de la DBD ("Ce champ ne peut pas être null") Vous pouvez implémenter de nombreuses validations complexes dans Ruby ("Ce champ doit être un email valide" est le le plus typique). Les validations sont exécutées juste avant d'appeler "Enregistrer" sur une instance de modèle.
    • relations : les clés étrangères peuvent également être mappées sur des modèles. Par exemple, si vous aviez une table (avec son modèle correspondant modèle) associé via une clé étrangère de votre client Ford, vous pouvez faire Ford.Brands < / code> et vous obtiendrez une gamme d'objets représentant tous les enregistrements de la table des marques qui ont un client_id = 1.
    • requêtes : Les modèles vous permettent de créer des requêtes dans Ruby et de les traduire en SQL eux-mêmes. La plupart des gens aiment cette fonctionnalité.

      Ce ne sont que quelques exemples. Enregistrement actif fournit beaucoup plus de fonctionnalités telles que les traductions, la portée des requêtes ou le support d'héritage de table unique.

      Dernier point mais non le moindre, vous pouvez ajouter vos propres méthodes à ces classes.

      Les modèles sont un excellent moyen de ne pas écrire "Spaguetti Code", car vous êtes un peu obligé de séparer votre code par fonctionnalité.

      • Modèles Manipulez l'interaction de la base de données et la logique commerciale
      • Vues Poignez le rendu HTML et l'interaction utilisateur
      • Contrôleurs Connectez des modèles avec Vues

0 commentaires

2
votes

modèles : objets de domaine tels que utilisateur , compte ou statut . Les modèles ne sont pas nécessairement pris en charge par un backend de base de données, comme par exemple le statut ne peut être qu'une simple énumération statiquement typée.

activeRecord :

Fournit des méthodes dynamiques pour queriser des tables de base de données. Une table de base de données est définie comme une classe qui hérite de la classe ActiveRecord (exemple pseudo-php): xxx

nouveaux enregistrements sont créés en créant de nouvelles instances de classes héritées Activerecord: xxx


0 commentaires