11
votes

À propos de "<<" Opérateur dans ce cas d'association de Rails

Je suis un débutant dans Ruby sur rails. Dans une application Rails, j'ai vu du code comme suit:

dans modèle , il existe une classe voiture : xxx

dans contrôleur , il existe une méthode "< quelque_method " xxx

J'ai trois questions à poser: < / p>

1. dans le code dans le contrôleur @ my_car.comments << composant.new () , qu'est-ce que ça fait? Quel <<< / code> signifie?

2. y a-t-il d'autres usages de "<<" dans Ruby-On-Rails ou en rubis?

3. Le voiture doit définir explicitement le association association avec composant classe si "< fort> <<< / forte> "est utilisé ou est le" <<< / strong> "peut être utilisé pour ajouter une nouvelle association à voiture , même l'association n'est pas définie dans voiture classe explicitement?


1 commentaires

Vous pouvez utiliser << aussi avec une chaîne. "quelque chose" << "Autre" Résultats dans "quelque chose d'autre". Vous pouvez surcharger l'opérateur << dans n'importe quelle classe, comme en C ++. Notez également que ce n'est qu'un <`dans le modèle, et cela signifie héritage.


3 Réponses :


21
votes

après votre édition:

point 1 xxx

est identique à xxx

point 2

Il vous permet d'ajouter des éléments à une collection ou même de cordes de concaténate.

Certains liens:

  • pour les tableaux

  • pour les chaînes

  • pour io flux < / p>

    Remarque Vous pouvez naturellement surcharger ou définir votre propre.

    point 3

    Les relations doivent être explicites, sinon les rails ne peuvent pas Créez les méthodes adéquates: @ my_car.components n'aurait aucun sens.


2 commentaires

Cela indique-t-il également que l'objet de voiture est associé à un objet composant avec «HAS_MANY» Association (voiture HAS_MANY Composant)?


@ Apneadiving, désolé pour l'acceptation tardive, votre réponse est excellente! Merci.



0
votes

<< Ajoute un élément à un tableau.

Donc, dans l'exemple ci-dessus, vous ajoutez un nouveau composant à la matrice CAR.COMPONENTS. Cela fait partie de Ruby et vous le verrez souvent.


3 commentaires

La classe de voiture doit-elle définir explicitement l'association HAS_MANY avec la classe de composants ou le "<<" peut être utilisé pour ajouter une nouvelle association?


@Mellon: il doit explicitement définir la relation


Apneadiving est correct, vous devez avoir une relation has_many définie.



1
votes

Concernant 1. & 2., j'ai résumé les différentes significations de <<< / code> Ici .


0 commentaires