私はいくつかのアドバイスが必要です。私のコントローラでCanCanとaccessible_byによってエラーが発生しました.SQLを特定できません。
、私はエラーを持っている: 「accessible_by呼び出しはブロックで使用することはできません定義 『に』 SQLは...決定することはできません。」
グループコントローラのコードは:
@groups = @q.result.order('name').accessible_by(current_ability,:read).page(params[:page]).per(20)
ability.rbファイルで
:ユーザーはこのグループに関連する、またはされていない場合user_just_joined
can :read, Group do |group|
group.try(:group_type) == 1 || group.try(:user) == user || user_just_joined(user, group.id)
end
は、trueまたはfalseを返す関数です。
はい、私はこのエラーを回避するために、このようにコードを準備する必要があることを知っている:
can :read, Group, :group_type => 1
can :read, Group, :user => user
can :read, Group, user_just_joined(user, :id)
//コード上の文を作成し、「OR」shoult、
最初の例に類推しかし: can :read, Group, user_just_joined(user, :id)
は動作しません:id値は未定義です。
渡されたパラメータに依存して、関数に "OR"ステートメントを使用すると、真または偽を返す最適な解決策は何ですか?
括弧内のクエリーが存在する必要がありますか? – quantumpotato