Ruby on Rails では、place holder, ? を使うから、SQL injection されない。
例えば、published.where('published_at < ?', Time.current)

逆に、クライアントから送信された文字列を直接、文字列で連結して使うと、SQL injection される。
SQLにとって特別な意味を持つ、' を使われて、危険な命令を埋め込まれてしまう

例えば、"' OR '1" を入れて、その後に危険な命令を埋め込む

place holderを使うと、"' OR '1" が送られてきても、
'\' OR \'1' のようにエスケープされるので安全

PHP は素人ばかりだから、これでデータを抜ける。
Railsを勉強していないから皆、SQLも文字列を連結して作っている