- ๋ฃจ๋น๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด, ๋ฉ์๋์
!
๊ฐ ๋ถ์ฌ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋ง์ด ๋ณด๊ฒ ๋ฉ๋๋ค. !
๋ฅผ ๋ถ์ด๋ ์ด์ ์ ์ด๋ค ๋ณ๊ฒฝ์ ์ด ์๋์ง, ruby์ ๊ตฌํ๋์ด ์๋ ๋ฉ์๋๋ค์ ๊ฐ๋จํ ์ดํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณผ ์์ ์ ๋๋ค.!
๋ฅผ ๋ถ์ด๋๊ฒ์ Exclamation Mark๋ผ๊ณ ํ์ง๋ง, ์ค์ง์ ์ผ๋ก ๋ฉ์๋์ ๋ถ์ด ์๋ค๋ฉด Bang Methods๋ผ๊ณ ๋ง์ด ํฉ๋๋ค.
-
์ผ๋จ ํ๋ง๋๋ก ์ ์ํ๋ค๋ฉด
dangerous methods(์ํํ ๋ฉ์๋)
๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. -
๋์ฒด ๋ญ๊ฐ ๊ทธ๋ ๊ฒ ์ํํ๊ธธ๋
!
๋ผ๋ mark๊น์ง ๋ง๋ค์๊ณ , ์ด๊ฑธ ์ํํ๋ค๋ผ๊ณ ๊ฒฝ๊ณ ๋ฅผ ์ค๋ค๋๊ฒ์ผ๊น์? -
์ฒซ๋ฒ์งธ ์ด์ ๋ ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์๋ณธ ๊ฐ์ฒด๊ฐ ์์ ๋๋ค๋ ์๋ฏธ๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์๋ฅผ๋ค์ด ์๋์ ๊ฐ์ ์์๋ฅผ ๋ด
์๋ค.
upcase
๋ฉ์๋๋ ๋๋ฌธ์๋ก ๋ณํํด์ฃผ๋ ๋ฉ์๋์ ๋๋ค.
string = "marco" pp string.upcase # MARCO pp string # marco pp string.upcase! # MARCO pp string # MARCO
- ์ ์์์์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฐ์ง๋ง,
!
๋ง ๋ถ์๋๋ฐ string์ ๋ํ ๊ฐ์ฒด๊ฐ ๋ณ๊ฒฝ๋๋ ๋ชจ์ต์ ๋ณผ์ ์์ต๋๋ค. - ์ด๋ฐ์์ผ๋ก ๊ฐ์ฒด ์์ฒด์ ๊ฐ์ ๋ณ๊ฒฝ๋๋๊ฒ์ ์ํํจ์ด๋ผ๊ณ ๋ํ๋ด๊ฒ ๋ฉ๋๋ค.
- ์๋ฅผ๋ค์ด ์๋์ ๊ฐ์ ์์๋ฅผ ๋ด
์๋ค.
-
๋๋ฒ์งธ ์ด์ ๋ ์ฑ๊ณต์ ์ผ๋ก ์ฑ๊ณต์ ์คํ์ ๊ธฐ๋ํ์ง๋ง, ๊ทธ๋ ์ง ์๋ค๋ฉด ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ค๋๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์ฆ, ์ฝ๊ฒ ์๊ฐํ๋ฉด ์์ธ๊ฐ ๋ฐ์ํ ์๋ ์๋ค๋ผ๋ ๊ฒ์ ๋ฉ์๋๋ฅผ ํตํด์ ์๋ ค์ฃผ๋ ๊ฒ์ ๋๋ค.
- ์์๋ฅผ ๋ณด๋ฉด, update๋ผ๋ ๋ฉ์๋๋ ActvieRecord์์ ํด๋น ์ํฐํฐ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด UPDATE ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๋ ๋ฉ์๋์ ๋๋ค.
@post.update(post_params) # ์ฑ๊ณต์ true, ์คํจ์, false
- ์ ์ฝ๋์์
!
๊ฐ ์์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ์ฑ๊ณต๊ณผ ์คํจ๋ฅผ boolean์ผ๋ก ๋ํ๋ด๊ฒ ๋๋ฉฐ, ์คํจ๋ฅผ ํ๊ฒ ๋์์๋ ์๋ฅผ๋ค์ด ๋ฐ๋ก if๋ฌธ์ผ๋ก ๋ถ๊ธฐ๋ฅผ ํด์ค์ผ ํ ์๋ ์์ต๋๋ค.
@post.update!(post_params) # ์คํจ์, Raise Exception
!
๋ฅผ ๋ถ์๋ค๋ฉด, ์คํจ์ false๊ฐ ์๋๋ผ ์์ธ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์ํํ๋ค๋๊ฑด ์๊ฒ ์ด. ๊ทธ๋ ๋ค๋ฉด ๋๋ํ๋ฅผ ๋ถ์ด๋ฉด ๋ฃจ๋น๊ฐ ๋ฐ๋ก ๋ญ ํด์ฃผ๋๊ฑธ๊น?
- ์ผ๋จ ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, Ruby์ ๋ช ๋ช ๊ท์น์ผ๋ฟ์ ๋๋ค.
- ๋ด๊ฐ ๋ฉ์๋๋ฅผ ๋ง๋ค๋ ํด๋น ๋ฉ์๋๋ ์์ธ๊ฐ ๋ฐ์ํ์ง ์์ง๋ง,
!
๋ฅผ ๋ถ์ฌ๋ ์๊ด์์ต๋๋ค. ๋ฃจ๋น๋ ์๋ชป๋๊ฒ์ด๋ผ๊ณ ์๋ ค์ฃผ์ง ์์ต๋๋ค. - ๊ทธ๋ ์ง๋ง, ๋๋ฃ ๊ฐ๋ฐ์๋ค๊ณผ ์ํตํ๊ธฐ ์ํด ๋ํ ๋ฃจ๋น๊ฐ ์๊ฐํ๋ ํ๋์ ์ค์ํ ๋ถ๋ถ์ด์ง ์์๊น ์๊ฐ์ด ๋ญ๋๋ค.
- ๊ฒฐ๋ก ์ ์ผ๋ก ์๋์ ์์ต๋๋ค.
- ๋ํ์ ์ผ๋ก ์ฒซ๋ฒ์งธ ์ด์ ์์ ์ธ์คํด์ค ๊ฐ์ ๋ณ๊ฒฝํ๋ค๊ณ ํ๋๋ฐ,
!
๋ฅผ ์ฐ์ง ์๋ ์๋ฅผ๋ค์ด upcase๋ฅผ ์ด๋ค๋ฉด ์ถ๊ฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ๋๊ฒ์ด๋ฉฐ,!
๋ฅผ ์จ์ ํด๋น ์ธ์คํด์ค ๊ฐ๋ง ๋ณ๊ฒฝํ๋ค๋ฉด ์ถ๊ฐ์ ์ธ ์ธ์คํด์ค ๋๋ ๋ฐฐ์ด์ด ์๋กญ๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ฝํ๋ ์ฅ์ ์ด ์๊ฒ ๋ฉ๋๋ค.
- ๋ฃจ๋น์ ์ปจ๋ฒค์ ์ค์ Bang Method๋ผ๋๊ฒ์ด ์๊ณ , ๋๊ฐ์ง์ ์ด์ ๋๋ถ์ ๋์ค๊ฒ ๋ฉ๋๋ค.
- ์ฌ์ค ๋ฌด์กฐ๊ฑด ์ํํ๋ค! ๋ผ๋ ๊ฐ๋ ๋ณด๋จ, ์ ์ฌ์ ์ผ๋ก ์ํํ ๋๋. ์ํํ ์๋ ์๋ค~ ๋ผ๋ ์๋ฏธ๋ก ์ฐ๋๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ข์ต๋๋ค.
- ์๋งคํ(?)์ผ๋ก
?
๊ฐ ์๋๋ฐ, ์ด๊ฑด ์ฐจํ ๊ธฐํ๋๋ฉด ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. - ๊ฐ ์ธ์ด์์ ํต์ฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ปจ๋ฒค์ ์ ๊ผญ ์์๋ฌ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด์ ๋ ๋๋ฃ ๊ฐ๋ฐ์์์ ํ์ ๋ ์ค์ํ์ง๋ง, ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ruby API๋ฅผ ์ดํดํ๊ธฐ์ํด์ ๊ผญ ์์๋ฌ์ผ ํ๋ ๊ฐ๋ ์ด ์๋๊น ์๊ฐ์ด ๋ญ๋๋ค.