Class: ApplicationRecord

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/application_record.rb

Overview

typed: true

Direct Known Subclasses

AdaptivePointsRatio, AddOns::AddOn, AddOns::Agenda, AddOns::CustomLabel, AddOns::KidsPrice, AddOns::Menu, AddOns::OpeningHour, AddOns::Pricing, AddOns::Restaurant, AdvReservation, Advertisement, AoaAuth, AoaReservation, ArchivedImage, AtReportConversion, Attachment, Banner, BannerCity, Bistrochat::InvSyncTrigger, Bistrochat::ReservationInvMismatch, BistrochatRestaurant, BlacklistedEmail, Blogger, BookingSummary, Branch, CalendarTemplate, Channel, ChannelAd, ChannelAdManager, City, CityDeliveryChannel, CityPackageType, CityServiceType, CompactRestaurant, Corporates::Event, Corporates::RestaurantPackageEvent, Counter, Country, CustomLabel, DeliveryAddress, DeliveryChannel, DeliveryPricingTier, Dimension, District, Driver, ExperienceInformation, Externals::Company, Externals::GbPrimepay::Card, Externals::GbPrimepay::Merchant, Externals::Grab::Order, Externals::Lalamove::Order, Externals::Omise::Charge, Externals::Omise::Customer, Externals::Omise::Source, Faq, Fav, FlashSale, FooterBanner, GenericNote, GetyourguidePackage, GlpCompactRestaurantRank, GlpRestaurantRank, GoogleReserve, GoogleReserveFeedFragment, GoogleReservePackage, GoogleReview, GroupLandingPage, GroupLandingPageGroup, Guest, HhPackage::Agenda, HhPackage::KidsPrice, HhPackage::OpeningHour, HhPackage::Package::MenuSection, HhPackage::PackageAttr, HhPackage::PackageBenefit, HhPackage::PackageCustomLabel, HhPackage::PackageGroup, HhPackage::PackageMenu, HhPackage::PackagePolicyImage, HhPackage::Pricing, HhPackage::PricingGroup, HhPackage::PricingMenu, HhPackage::PricingSpendingTier, HhPackage::RestaurantPackage, HhPackage::RestaurantPackageMenu, HhSpecial, HomeSection, HomeSectionTag, HotelInformation, IaReportConversion, Inventory, InventoryBistrochat, InventoryBistrochatBlockage, InventoryMyMenu, InventoryMyMenuBlockage, InventoryReservation, InventorySevenRooms, InventorySevenroomsBlockage, InventorySource, InventorySummary, InventoryTablecheck, InventoryTablecheckBlockage, InventoryTakeAway, InventoryTakeAwayReservation, InventoryTemplate, InventoryTemplateGroup, InventoryWeeloyBlockage, KafkaReindexAvailability, KiosqueCode, KiosqueReservation, LimitPointsAdjustment, LimitPointsUsage, LoyaltyLevel, LoyaltyReservationDatum, Message, MyMenu::InvSyncTrigger, MyMenu::ReservationInvMismatch, MyMenuRestaurant, NearestRestaurant, Note, OrderNow, OtherEmail, Owner, OwnerReview, PackagePaymentType, PackageSpecialMenu, PackageType, PartnerTicketCode, Partners::ReservationSummary, Partners::ReservationSummaryAddOn, Partners::ReservationSummaryPackage, PaymentType, PendingTransaction, PhoneData, PrimaryTag, Promotion, Rate, Report, Reservation, ReservationAddOn, ReservationGroupSection, ReservationMenu, ReservationMenuSection, ReservationPackage, ReservationProperty, ReservationRefundGuarantee, ReservationSpecialMenu, ReservationTracking, ReservationVoucher, ReservationWeTravelTogether, Restaurant, RestaurantDeliveryChannel, RestaurantDocument, RestaurantExternal, RestaurantGroup, RestaurantInfo, RestaurantPriceSummary, RestaurantSectionSort, RestaurantTag, RestaurantTagGroup, RestaurantTagGroupsRestaurant, RestaurantTagsRestaurant, RestaurantTagsTotal, RestaurantVoucherSetting, Restaurants::Line, Restaurants::Picture, Restaurants::ReviewStat, Restaurants::Tc, Review, ReviewPhoto, ReviewRecommendedFor, Reward, SearchIcon, SearchIconsCity, SelfCheckinRestaurant, SelfCheckinSetting, Seo, ServiceType, SevenRooms::InvSyncTrigger, SevenRooms::ReservationInvMismatch, SevenRoomsRestaurant, SharedCustomer, SidekiqJob, SpecialBonus, Staff, StaffDevice, StaffPackage, StaffRole, SuggestionTag, Synonym, Tablecheck::InvSyncTrigger, Tablecheck::ReservationInvMismatch, TablecheckRestaurant, Ticket, TicketBundle, TicketGroup, TicketGroupBundle, TicketGroupCustomLabel, TicketGroupPaymentType, TicketGroupRestaurant, TicketGroupTnc, TicketTransaction, TouchPoints::DataSet, TouchPoints::Unsub, TransactionNotif, UnregisteredDevice, UpdatedInventory, User, UserBenefitExpiry, UserDevice, UserLoyalty, VendorPayment, VendorReservation, VendorRestaurant, VendorTicketTransactionPayment, VendorUser, Vendors::DianpingPackage, Voucher, VoucherDeductible, VoucherGroup, VoucherPackageType, VoucherPaymentType, VoucherRestaurant, VoucherRestaurantPackage, VoucherTransaction, VoucherTransactionDetail, WeeklyRestaurantSummary, WeeloyRestaurant, Widget

Class Method Summary collapse

Class Method Details

.sync_carrierwave_url(attachment_method) ⇒ Object

Sometimes cached_xxx_url value is not updated when the attachment is updated. so we need to sync the value manually.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/models/application_record.rb', line 8

def self.sync_carrierwave_url(attachment_method)
  class_eval do
    after_commit :sync_carrierwave_url, on: %i[create update]
    define_method :sync_carrierwave_url do
      if destroyed?
        # do nothing
      else
        # prevent infinite loop
        return if changed.include?("cached_#{attachment_method}_url")

        attachment = send(attachment_method)
        if attachment.blank?
          send :update_columns, "cached_#{attachment_method}_url" => nil
        elsif attachment.present?
          send :update_columns, "cached_#{attachment_method}_url" => generate_cached_carrierwave_url(attachment)
        end
      end
    end
  end
end