Slide 1

Slide 1 text

ERD on Rails 68th RubyKansai Takashi Ogomori

Slide 2

Slide 2 text

ERD on Rails Rails͸Active RecordͰϞσϧΛૢ࡞Λ͢Δɻ Ϟσϧʹ͸ΞιγΤʔγϣϯΛઃఆͰ͖Δɻ 2/10

Slide 3

Slide 3 text

Example Domain ֓ཁʢՁ஋ʣ Ϣʔεέʔε ΦϒδΣΫτ ߦࣄ؅ཧγεςϜʢΠϕϯτΛ։࠵ͯ͠ɺίϛϡχςΟΛߏஙʣ · ར༻ऀ͸ίϛϡχςΟΛ૑ઃͰ͖Δɻ ར༻ऀ͸ίϛϡχςΟʹೖձͰ͖Δɻ ίϛϡχςΟʹೖձ͢ΔͱϝϯόʔʹͳΔɻ ίϛϡχςΟ͸ΠϕϯτΛ։࠵Ͱ͖Δɻ Πϕϯτ͸νέοτΛൃߦͰ͖Δɻ ϝϯόʔ͸νέοτೖखͰ͖Δɻ · · · · · · ར༻ऀ, ίϛϡχςΟ, ϝϯόʔ, Πϕϯτ, νέοτ · 3/10

Slide 4

Slide 4 text

Associations One-to-manyʢ1ରଟʣ Many-to-manyʢଟରଟʣ One-to-Oneʢ1ର1ʣ ̍ͭͷίϛϡχςΟ͸ଟ਺ͷΠϕϯτΛ։࠵Ͱ͖Δɻ ̍ͭͷΠϕϯτ͸ଟ਺ͷνέοτΛൃߦ͢Δ͜ͱ͕Ͱ͖Δɻ · · ར༻ऀ͸ଟ਺ͷίϛϡχςΟʹՃೖ͢Δ͜ͱ͕Ͱ͖Δɻ ϝϯόʔ͸ෳ਺ͷΠϕϯτʹࢀՃͰ͖Δɻ · ίϛϡχςΟ͸ଟ਺ͷར༻ऀΛՃೖͤ͞Δ͜ͱ͕Ͱ͖Δɻ - · Πϕϯτ͸ෳ਺ͷϝϯόʔΛࢀՃͤ͞Δ͜ͱ͕Ͱ͖Δɻ - ̍ͭͷίϛϡχςΟ̍ͭͷϙϦγʔΛ࣋ͭ͜ͱ͕Ͱ͖Δɻ · 4/10

Slide 5

Slide 5 text

Domain Specific Language (DSL) Types આ໌ belongs_to ࢀর has_one ͻͱ͚ͭͩ࣋ͭ has_many ෳ਺࣋ͭ has_many through ... Λ௨ͯ͡ෳ਺࣋ͭ has_one through ... Λ௨ͯ͡ͻͱ͚ͭͩ࣋ͭ has_and_belongs_to_many ࢀরͱෳ਺࣋ͭ 5/10

Slide 6

Slide 6 text

Generate 1 One-to-manyʢ1ରଟʣ One-to-Oneʢ1ର1ʣ $ rails generate scaffold group name $ rails generate scaffold event group:references has_many :events belongs_to :group $ rails generate scaffold policy group:references has_one :policy 6/10

Slide 7

Slide 7 text

Generate 2 Many-to-manyʢଟରଟʣ Many-to-manyʢଟରଟʣ $ rails generate scaffold user name $ rails generate scaffold member user:references group:references has_many :members has_many :groups, through: :members has_many :users, through: :members $ rails generate scaffold ticket event:references member:references has_many :tickets has_many :events, through: :tickets has_many :members, through: :tickets 7/10

Slide 8

Slide 8 text

Generate 3 PolymorphicʢϙϦϞʔϑΟοΫʣ $ rails generate scaffold image imageable:references{polymorphic} name has_many :images, as: :imageable 8/10

Slide 9

Slide 9 text

ERD 9/10

Slide 10

Slide 10 text

10/10