J'ai les modèles suivants:Comment puis-je faire une recherche dans Rails avec des conditions définies sur la table de jointure d'une association: through?
class User < ActiveRecord::Base
has_many :permissions
has_many :tasks, :through => :permissions
class Task < ActiveRecord::Base
has_many :permissions
has_many :users, :through => :permissions
class Permission < ActiveRecord::Base
belongs_to :task
belongs_to :user
Je veux être en mesure d'afficher uniquement les tâches qu'un utilisateur a accès (à savoir, le drapeau read
est réglé sur true
dans le tableau Permissions
). Je peux y arriver avec la requête suivante, mais il ne semble pas très Rails-y pour moi:
@user = current_user
@tasks = @user.tasks.find_by_sql(["SELECT * FROM tasks INNER JOIN permissions ON tasks.id = permissions.task_id WHERE permissions.read = true AND permissions.user_id = ?", @user.id])
Quelqu'un sait la bonne façon de le faire?