사용자가 정보를 편집 할 수 있도록 허용하지만 게시하기 전에 관리자 승인이 필요합니다.

밀린 드

사용자가 자신의 부동산을 판매용으로 전시 할 수있는 Rails 4.4를 사용하는 웹 사이트가 있습니다. 사용자는 등록 및 업로드를 통해 자산의 데이터와 사진을 제공 한 다음 관리자가 데이터를 확인하고 데이터를 승인하고 게시하기 전에 데이터를 게시 할 수 있는지 사용자에게 묻습니다.

사용자가 돌아와서 새 데이터를 편집하거나 추가 할 수 있도록하고 싶습니다. 예를 들어 사용자는 새 사진을 추가하거나 자산의 주소를 업데이트 할 수 있습니다.

사용자가 실제로 라이브로 전환하지 않고 라이브 데이터를 편집 할 수 있도록하려면 어떻게해야합니까?

두 개의 별도 데이터베이스를 유지해야합니까? 하나는 읽기 전용 및 라이브 데이터 용이고 다른 하나는 편집 용 전용입니다 (라이브의 정확한 복제본)? 데이터베이스를 두 개 만들더라도 업데이트 된 데이터를 어떻게 업데이트하고 프로덕션에 추가 할 수 있습니까?

Coreyward

approve연결된 속성을 업데이트 하는 작업이 있는 별도의 스키마로 편집 된 필드를 저장하여 이에 접근 합니다.

이것은 부분적으로 불완전한 / 의사 코드입니다. 자신의 작업에 대한 책임은 귀하에게 있습니다.

모델 :

class PropertyEdit
  belongs_to :property
  belongs_to :reviewer, class_name: 'Admin'
  enum :state, [ :pending, :approved, :cancelled ]

  def approve_changes(admin)
    if property.update { field_name => suggested_value }
      self.reviewer = admin
      approved!
    else
      # Handle error
    end
  end
end

class Property
  has_many :property_edits
end

속성 업데이트를 처리하기위한 컨트롤러 메서드 :

class PropertiesController < ApplicationController
  def edit
    @property = Property.find(params[:id])
  end

  def update
    @property = Property.find(params[:id])
    @property.attributes = property_update_params
    if @property.valid?
      @property.changes.each do |attribute, (old, new)|
        edit = @property.property_edits.new({
          field_name: attribute,
          previous_value: old,
          suggested_value: new
        })

        edit.save
      end

      flash[:success] = "Your updates will be live once approved."
      redirect_to property_path(@property)
    else
      render :edit
    end
  end

protected

  def property_update_params
    params.require(:property).permit(:price, :address, :city)
  end
end

편집 검토를 처리하기 위해 이제 한 번에 승인 할 수있는 단일 편집과 모든 변경 사항에 대한 로그가 있습니다.

엣지 케이스와 커뮤니케이션을 처리하는 로직을 추가하고 싶을 것입니다.

  1. 동일한 필드에 최신 수정 사항이 입력되면 보류중인 수정 사항 취소
  2. 사용자가 볼 수 있도록 보류중인 편집을 사용하여 Property 인스턴스를 빌드합니다. _changed?속성을 사용 하여 관련 편집에 "보류중인"태그 표시
  3. 변형, 압축 등을 처리 할 최적의 시간을 결정해야하므로 사진에 대한 파일 처리를 가장 잘 통합하는 방법을 알아 봅니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관