У меня есть следующие модели:Как я могу найти в Rails с условиями, установленными в таблице соединений: через объединение?
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
Я хочу, чтобы иметь возможность отображать только задачи, которые пользователь имеет доступ (т.е. read
флаг установлен в true
в Permissions
таблице). Я могу сделать это с помощью следующего запроса, но это не кажется очень Rails-у меня:
@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])
Каждый знает правильный способ сделать это?