5
:RansackでRails 3でスコープを使用するにはどうすればよいですか?私は、次のしている私のウィジェットモデルで
scope :accessible_to, lambda { |user|
if user.has_role?('admin')
self.all
else
roles = user.roles
role_ids = []
roles.each { |r| role_ids << r.id }
self.joins(:widget_assignments).where('widget_assignments.role_id' => role_ids)
end
}
理想的には、私は私のコントローラで私が持っているので、掻き回すの検索結果のフィルタとして、このスコープを使用したいと思います:
def index
@q = Widget.accessible_to(current_user).search(params[:q])
@widgets = @q.result.order('created_at DESC')
end
行いますこれは次のエラーを生成します:
undefined method `search' for Array:0x007ff9b87a0300
私はRansackがActiveRecord関係オブジェクトを探しており、配列ではないと推測しています。とにかくRansackのフィルターとしてスコープを使用できるのですか?
あなたの実際の質問には関係ありませんが、スコープの後半はおそらく 'joins(:widget_assignments).where( 'widget_assignments.role_id' => user.role_ids)'と書かれていますか?または 'user.roles.fetch(:id)'?私は間違っている可能性が:) –