Je suis encore novice dans Ruby et spécifiquement Rails et j'apprends toujours à faire les choses correctement d'une manière sur rails. donc je User
classe comme ci-dessousRequêtes ActiveRecord personnalisées pour un utilisateur spécifique (par exemple Admin)
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :email, presence: true, email: true
has_many :user_program_roles, dependent: :destroy
has_many :programs, through: :user_program_roles
has_many :user_answers
has_many :homework_students
...
...
end
De classe ci-dessous, je comprends que, pour obtenir un program
, user
doit exister dans user_program_roles
. Ma question est, est-il un moyen que je peux aller chercher tous les programmes sans que l'utilisateur doive être dans user_program_roles
(par exemple je suis Admin
et je veux voir tous les programmes). Quel est le meilleur moyen d'y parvenir de façon ferroviaire?
Update
Alors atm dans l'application, je peux avoir quelque chose comme ça current_user.programs
et il va chercher tous les programmes si le current_user
a record user_program_roles
. Puis-je obtenir semblable à cela, je ne sais pas si je peux faire quelque chose comme ça dans le rubis (à l'intérieur User
classe)
def programs
if admin?
Program.all # return all program if this user is admin
else
programs # return only program that this user has role in it
end
end
Vos déclarations sont déjà correctes. Pour obtenir tous les programmes, il suffit d'utiliser 'Program.all'. L'utilisateur existe uniquement dans 'user_program_roles' si l'utilisateur est associé à un programme. – vee
J'ai mis à jour ma question, avec ce que j'essaie d'accomplir. Mais ce code n'a pas fonctionné. Est-il possible d'écraser la méthode ActiveRecord? –