私は次のモデルを持っています:
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-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])
誰かがこれを行う正しい方法を知っていますか?