Comment utiliser Appartient_to dans Ruby on Rails

Rail 4 :
Supposons que nous ayons deux modèles Film et Acteur. L'acteur a de nombreux films et le film appartient à l'acteur. Dans la plupart des cas, les développeurs utilisés pour valider la clé étrangère Actor_id sont présents ou non. Dans ce cas, il ne validera pas le modèle d'acteur quant à savoir si l'identifiant d'acteur saisi existe ou non. C'est comme la validation d'attribut qui valide toujours que les champs ne doivent pas être vides lors de la soumission du formulaire.

Validation avec clé étrangère :

class Movie < ApplicationRecord Appartient_to :actor valide :actor_id, présence : vraie fin
class Actor < ApplicationRecord has_many :movies, dependant: :destroy end

Le scénario ci-dessus valide ou non la présence de l'identifiant de l'acteur comme le validateur de présence d'attribut normal.

Ex : Actor.create(titre : « abc »). => {id : 1, titre : 'abc'} m = Movie.new(titre : « ok ok », acteur_id : 111) => m.valid ? => true => Actor.find(111) ActiveRecord::RecordNotFound : Impossible de trouver l'acteur avec 'id'=111

Nous pouvons toujours sauvegarder l'enregistrement du film sans acteur valide.

Avec des associations

class Movie < ApplicationRecord appartient_to :actor valide :actor, présence: true end

(ou)

classe Film <ApplicationRecord appartient_à :acteur, obligatoire : vraie fin
class Actor < ApplicationRecord has_many :movies, dependant: :destroy end
Ex : Actor.create(titre : « abc »). ==> {id : 1, titre : 'abc'} m = Movie.new(titre : « ok ok », acteur_id : 111) ==> m.valid ? => false ==> m.errors.full_messages, ['L'acteur ne peut pas être vide']

Dans ce cas, il validera toujours si l'acteur saisi existe ou non. Dans le cas d'un acteur invalide, cela vous renvoie une erreur. C’est la meilleure pratique pour réaliser vos associations. Il vérifie toujours si l'objet associé existe ou non.

Rails5

À partir de rails5, ces validations ont été ajoutées par défaut. Il valide que l'objet d'association doit être présent lorsque vous définissez les associations Appartient_to.

Notes de version

http://guides.rubyonrails.org/5_0_release_notes.html (belongs_to déclenchera désormais une erreur de validation par défaut si l'association n'est pas présente.)

Nous pouvons désactiver complètement cette fonctionnalité de l'application en définissant l'option de configuration dans le fichier d'initialisation.

config/initializers/new_framework_defaults.rb
Rails.application.config.active_record.belongs_to_required_by_default = false

Ce fichier d'initialisation est présent uniquement dans l'application Rails5. Vous devez ajouter ce fichier d'initialisation manuellement lorsque vous migrez à partir d'une ancienne version de votre application Rails et apportez les modifications nécessaires.

class Post < ApplicationRecord has_many :comments, dependant: :destroy end
Commentaire de classe <ApplicationRecord appartient_à : fin de la publication
c = Comment.create(titre : « article génial ») c.errors.full_messages.to_sentence => « Le message doit exister »

Nous ne pouvons créer aucun enregistrement de commentaire sans enregistrement associé.

Nous pouvons désactiver ce comportement par défaut en définissant

appartient_to :post, facultatif : vrai
c = Comment.create(titre : « article génial »)
=> 

RailsCarma propose Services de développement Ruby on Rails depuis plus de 8 ans. Nos développeurs maîtrisent parfaitement l'exécution de toutes sortes de Développement web Ruby on Rails projets et améliorer les fonctionnalités de vos applications Rails existantes. Contactez-nous pour en savoir plus sur nos compétences en développement et les projets sur lesquels nous avons travaillé.

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench