RDBMS は便利だからもっと使っていきましょうというお話。
表参道.rb #25 Rails アンチパターン で話しました。 https://omotesandorb.connpass.com/event/62936/
ʮ3%#.4Λ୯ͳΔσʔλετΞͱͯ͠ѻ͏ʯදࢀಓSCd3BJMTΞϯνύλʔϯd[email protected]@
View Slide
୭ʁ• OSA Shunsuke• Rails Ͱ Web ΞϓϦέʔγϣϯΛॻ͍͍ͯ·͢• Working on ΫοΫύουྉཧڭࣨ• ͖ͳ͜ͱɿϞσϦϯά• ΦϒδΣΫτͦͷ૬ޓ࡞༻Λߟ͑Δͷ͕͖• Twitter: @s_osa_• GitHub: s-osa
͜Μͳ͜ͱͰࠔ͍ͬͯ·ͤΜ͔ʁ
Ϧιʔεͷଘࡏ֬ೝ• belongs_to Ͱఆٛ͞Ε͍ͯΔϦιʔεͷଘࡏ֬ೝΛසൟʹ͍ͯ͠Δ• if article.blog• nil?• blank?• present?• try• &.
͔ͭ͠ͳ͍ͣͷϨίʔυ͕ෳ͋Δ• ຊདྷ unique Ͱ͋ΔͣͷΧϥϜ͕ unique ʹͳ͍ͬͯͳ͍• ʮFavorite ΛऔΓফ͚ͨ͠Ͳফ͑ͳ͍ʯ• ௐͯΈͨΒ2݅σʔλ͕Ͱ͖͍ͯͯɺยํ͔͠আ͞Ε͍ͯͳ͔ͬͨ
ͳͥ͜Μͳ͜ͱʹʁ
Ϧιʔεͷআ• ଞͷϦιʔεʹΑͬͯࢀর͞Ε͍ͯΔϦιʔεΛআͯ͠͠·͏• Rails Ͱ Association ͷఆٛʹ dependent ΦϓγϣϯΛ͢ͱআ࣌ͷಈ࡞͕ఆٛͰ͖Δ• nullify: ݁ہ nil check ͕ඞཁ• restrict_with_*: ʢ͍ͬͯΔਓΛݟͨ͜ͱ͕ͳ͍ʣ
WBMJEBUJPODBMMCBDLΛհ͞ͳ͍σʔλߋ৽• update_attribute(:column, value)• save(validate: false)• ଞͷΞϓϦέʔγϣϯ• SQL
ଟॏੜ• ಉ͡σʔλΛෳճॻ͖ࠐΉͱॏෳσʔλ͕࡞͞Εͯ͠·͏• ʮϘλϯ1ճ͚ͩԡ͍ͯͩ͘͠͞ʯ
ΞϓϦέʔγϣϯʹόά͕ೖΓ͍͢• ਓؒؒҧ͑ΔͷͰόάΛੜΜͰ͠·͏• ΞϓϦέʔγϣϯසൟʹߋ৽͞ΕΔ
ΞϓϦέʔγϣϯͰ͛ͳ͍
3%#.4ͷ੍Λ͏
'03&*(/,&:੍• ֎෦Ωʔͷࢀরઌ͕ଘࡏ͢Δ͜ͱΛอূ͢Δ• ࢀরઌ͕ଘࡏ͠ͳ͍ϨίʔυΛ INSERT/UPDATEͨ͠Γɺࢀর͞Ε͍ͯΔϨίʔυΛ DELETE ͢ΔͱΤϥʔʹͳΔ• Rails 4.2 Ͱαϙʔτ͞ΕΔΑ͏ʹͳͬͨ
6/*26&੍• ࢦఆͨ͠ΧϥϜͷσʔλ͕ҰҙͰ͋Δ͜ͱΛอূ• ॏෳϨίʔυΛൃੜͤ͞ΔΫΤϦΤϥʔ• ֎෦Ωʔʹઃఆ͢Δͱศརͳ͜ͱ͕ଟ͍• has_one ͞Ε͍ͯΔ֎෦Ωʔʹఆٛͯ͠࠷େ1݅Ͱ͋Δ͜ͱΛอূ• தؒςʔϒϧͷ֎෦Ωʔʹෳ߹ UNIQUE ੍Λఆٛͯ͠ɺಉ͡Έ߹Θͤอଘ͞Εͳ͍Α͏ʹ• users <— favorites —> articles
͓·͚ɿͦͷଞͷ੍• NOT NULL ੍• σϑΥϧτͰ͚ͭΔ͖• ϛοΫ͞ΜʹΑΔʮNULLʹ·ͭΘΔॾʯ͕Φεεϝ• http://www.geocities.jp/mickindex/database/idx_database.html• CHECK ੍• ศར͚ͩͲϨʔϧ͔Β֎Εͯ͠·͏• schema.rb -> structure.sql• MySQL Ͱ͑ͳ͍
੍ʹΑͬͯಘΒΕΔͷ
σʔλΛ৴པͰ͖Δ• FOREIGN KEY ੍͕͍͍ͭͯΔ֎෦Ωʔ࣮֬ʹؔ࿈ϦιʔεΛͨͲΕΔ• UNIQUE ੍͕͍͍ͭͯΔΧϥϜ࣮֬ʹ unique• nil check Ϩίʔυͷ֬ೝ͕ෆཁʹͳͬͯίʔυ͕εοΩϦ͢Δ
ޡΓʹૣ͘ؾ͚Δ• ෆਖ਼ͳσʔλΛੜ͠Α͏ͱ͢ΔΫΤϦ͕͛ΒΕͨΒɺྫ֎ʹΑͬͯͦΕʹؾͮ͘͜ͱ͕Ͱ͖Δ• ҟৗঢ়ଶʹૣ͘ؾ͚ͮݪҼΛಥ͖ࢭΊΔͷ͕༰қʹͳΔ• յΕͨσʔλΛදࣔ͢Δͱ͖·ͰҟৗͰ͋Δ͜ͱʹؾ͚ͮͳ͍ͱɺͲ͜Ͱੜɾߋ৽͞Εͨͷ͔ΛௐΔͷେม
3%#.4ͱྑָͯ͘͘͠͠ίʔυΛॻ͜͏