Я кое-что понял, и у меня пока все работает:
Spree::Product.class_eval do
class << self
alias_method :orig_available, :available
def available(available_on = nil, _currency = nil)
orig_available(available_on, _currency).where("#{Spree::Price.quoted_table_name}.price_type = ?", Spree::Price.price_types[:one_time])
end
end
end