| Bytes | Lang | Time | Link |
|---|---|---|---|
| 053 | Google Sheets | 250126T102252Z | doubleun |
| 021 | Retina 0.8.2 | 250126T095518Z | Neil |
| 006 | Vyxal 3 l | 250126T043128Z | lyxal |
| 008 | Uiua 0.15.0dev.1 | 250126T042946Z | Tbw |
Google Sheets, 53 bytes
=match(abs(A2),sequence(abs(A2)+abs(B2),1,,abs(B2)),)
Outputs a positive integer when the rational is an integer, and an error value otherwise.

Retina 0.8.2, 21 bytes
-?\d+
$*
r`^\1*/(1+)$
Try it online! Link includes test cases. Explanation: Converts to unary, then tries to find a multiple of the absolute denominator that equals the numerator.
If that looks too much like division, then for 27 bytes:
-?\d+
$*
+`(1+)/\1$
/$1
^/.
Try it online! Link is to verbose version of code. Explanation: Converts to unary, then subtracts the absolute denominator from the absolute numerator as many times as possible, then checks to see whether the result is zero. (Removing the trailing . would allow 0/0.)
Uiua 0.15.0-dev.1, 8 bytes SBCS
∊×⇡+1,∩⌵
Takes n m and outputs 1 iff \$\frac{m}{n} \in \mathbb{Z}\$ (takes the stance that 0/0 = 1, will work on finding a solution that does not)
Explanation
∊×⇡+1,∩⌵
∩⌵ # absolute value of both
⇡+1, # range [0 ... m]
× # times n
∊ # is m in this list?