J'ai un modèle de Voici mon groupe: Et voici mon événement: Je voudrais pour créer un Groupe
qui comporte de nombreux événements
, et j'essaie de trouver les groupes qui ont des événements publics uniquement via quelque chose comme Group.public_events
class Event < ApplicationRecord
belongs_to :group
end
class Group < ApplicationRecord
has_many :events, dependent: :destroy
end
scope: public_events
pour trouver .where (private: false)
sur l'événement, mais cela doit-il aller sur le groupe ou l'événement?
3 Réponses :
vous pouvez mettre Event.rb
@public_events = Group.first.events.public_events
et vous pouvez l'appeler
class Event < ApplicationRecord belongs_to :group scope :public_events, lambda { where('private = ?',false)} end
Si je fais cela, j'obtiens une erreur de méthode non définie. Qu'est-ce que je fais mal? Merci
ah désolé j'ai oublié de mentionner .events, je viens de corriger ci-dessus @public_events = Group.first.events.public_events
Participera à l'événement comme ceci.
class Event < ApplicationRecord belongs_to :group scope :public_events, -> { where(private: false) } end
L'appelez-vous Group.first.public_events? Parce que j'obtiens un noMethodError. Merci
Vous pouvez l'appeler Group.public_events
appelez-le Group.public_events
Vous pouvez utiliser cette option.
scope :public_events, ->(parameter_if_any) { where({ private: parameter_if_any||false } ) }