Создание черновой версии объекта с использованием Audited Gem - PullRequest
0 голосов
/ 14 ноября 2018

Audited сделан для работы с текущей версией и предыдущими версиями. Я хочу иметь еще одну версию, будущую версию, черновик АКА.

желаемый сценарий

Текущая версия объекта используется везде. Однако на экране администратора вы можете получить доступ и отредактировать будущую / черновую версию объекта. Это позволяет вам вносить изменения, которые еще не видны другим. Когда черновик готов, вы публикуете его, делая его текущей версией, используемой повсеместно.

Я не вижу никакой поддержки для этого.

  1. Я что-то упустил? Это поддерживается?
  2. Есть ли какой-нибудь проверенный хак, который может поддержать это, даже уродливым способом?
  3. Если нет, то кажется ли это чем-то разумным, что можно сделать с помощью Audited gem, или мне лучше использовать другой метод?

1 Ответ

0 голосов
/ 14 ноября 2018

Я не использовал камень Audited для доставки в "черновом" режиме.Вместо этого я добавил логическое имя active в модель и объявил

 default_scope { where(active: true) }
 scope :active, -> { where(active: true )  }
 scope :draft,  -> { where(active: false)  }

Затем в контроллере для администраторов появился способ просмотра черновиков:

def in_draft
  # Admins can see all items in draft status.
  # Sellers can see only their own items in draft status.
  # Buyers can't get here at all because of the authorizations
  if current_tuser.role == "Themadmin"
    @seller_listings = Listing.unscoped.draft
  end
end

Последний, метод в контроллере для публикации элемента:

80   def publish
 81     @listing = Listing.unscoped.find(params[:id])
 82     @listing.active = true
 83     respond_to do |format|
 84       if @listing.save!
 85         format.html {redirect_to @listing, notice: 'Listing changed from draft to published.'}
 86       else
 87         format.html {redirect_to @listing, notice: 'Something went wrong'}
 88       end
 89     end
 90   end
...