Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rails アンチパターン「RDBMS を単なるデータストアとして扱う」 / Rails Anti-pattern RDBMS is not more than datastore

Rails アンチパターン「RDBMS を単なるデータストアとして扱う」 / Rails Anti-pattern RDBMS is not more than datastore

RDBMS は便利だからもっと使っていきましょうというお話。

表参道.rb #25 Rails アンチパターン で話しました。
https://omotesandorb.connpass.com/event/62936/

OSA Shunsuke

August 03, 2017
Tweet

More Decks by OSA Shunsuke

Other Decks in Technology

Transcript

  1. ୭ʁ • OSA Shunsuke • Rails Ͱ Web ΞϓϦέʔγϣϯΛॻ͍͍ͯ·͢ •

    Working on ΫοΫύουྉཧڭࣨ • ޷͖ͳ͜ͱɿϞσϦϯά • ΦϒδΣΫτ΍ͦͷ૬ޓ࡞༻Λߟ͑Δͷ͕޷͖ • Twitter: @s_osa_ • GitHub: s-osa
  2. ͔ͭ͠ͳ͍͸ͣͷϨίʔυ͕ෳ਺͋Δ • ຊདྷ͸ unique Ͱ͋Δ͸ͣͷΧϥϜ͕ unique ʹͳͬ ͍ͯͳ͍ • ʮFavorite

    ΛऔΓফ͚ͨ͠Ͳফ͑ͳ͍ʯ • ௐ΂ͯΈͨΒ2݅σʔλ͕Ͱ͖͍ͯͯɺยํ͔͠ ࡟আ͞Ε͍ͯͳ͔ͬͨ
  3. ਌Ϧιʔεͷ࡟আ • ଞͷϦιʔεʹΑͬͯࢀর͞Ε͍ͯΔϦιʔεΛ࡟আ ͯ͠͠·͏ • Rails Ͱ͸ Association ͷఆٛʹ dependent

    Φϓγϣ ϯΛ౉͢ͱ࡟আ࣌ͷಈ࡞͕ఆٛͰ͖Δ • nullify: ݁ہ nil check ͕ඞཁ • restrict_with_*: ʢ࢖͍ͬͯΔਓΛݟͨ͜ͱ͕ͳ͍ʣ
  4. 6/*26&੍໿ • ࢦఆͨ͠ΧϥϜͷσʔλ͕ҰҙͰ͋Δ͜ͱΛอূ • ॏෳϨίʔυΛൃੜͤ͞ΔΫΤϦ͸Τϥʔ • ֎෦Ωʔʹઃఆ͢Δͱศརͳ͜ͱ͕ଟ͍ • has_one ͞Ε͍ͯΔ֎෦Ωʔʹఆٛͯ͠࠷େ1݅Ͱ͋Δ͜ͱ

    Λอূ • தؒςʔϒϧͷ֎෦Ωʔʹෳ߹ UNIQUE ੍໿Λఆٛͯ͠ɺ ಉ͡૊Έ߹Θͤ͸อଘ͞Εͳ͍Α͏ʹ • users <— favorites —> articles
  5. ͓·͚ɿͦͷଞͷ੍໿ • NOT NULL ੍໿ • σϑΥϧτͰ͚ͭΔ΂͖ • ϛοΫ͞ΜʹΑΔʮNULLʹ·ͭΘΔॾ໰୊ʯ͕Φεεϝ •

    http://www.geocities.jp/mickindex/database/idx_database.html • CHECK ੍໿ • ศར͚ͩͲϨʔϧ͔Β֎Εͯ͠·͏ • schema.rb -> structure.sql • MySQL Ͱ͸࢖͑ͳ͍