`Scoped` 패턴을 사용하여 Rails 컨트롤러 간에 공통 코드 공유
Scoped
문제 패턴: 공유 코드(변수 설정, 권한 부여)를 넣고 컨트롤러를 슬림화하는 장소를 사용해 보세요.용법
이 특정 패턴은 동작의 일부를 공유하는 코드베이스인 DHH 및 Basecamp에서 비롯됩니다.
before_action
를 조회하기 위해 동일한 Channel
를 반복하는 절약은 그 자체로 훌륭한 이점이 되지만 Scoped
의 명명 규칙은 매우 훌륭하고 날카로운 이름입니다. 재생 목록은 채널에 대해 "범위가 지정"되므로 해당 컨트롤러가 "채널 범위에 지정"되는 것이 합리적입니다.module ChannelScoped
extend ActiveSupport::Concern
included do
before_action :set_channel, :authorize_channel
end
private
def set_channel
@channel = Channel.find(params[:channel_id])
end
def authorize_channel
authorize @channel # check that user has access, etc
end
end
class Channels::SubscriptionsController < ApplicationController
include ChannelScoped
end
class Channels::VideosController < ApplicationController
include ChannelScoped
end
class Channels::PlaylistsController < ApplicationController
include ChannelScoped
end
추가 리소스
DHH 요지: Models for Nested Resources
Reference
이 문제에 관하여(`Scoped` 패턴을 사용하여 Rails 컨트롤러 간에 공통 코드 공유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swanson/sharing-common-code-between-rails-controllers-with-scoped-pattern-471m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)