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