← все видео

The Rails Delegated Type Pattern with Jeffrey Hardy

37signals · 2025-12-19 · 1ч 4м · 8 879 просмотров · YouTube ↗

Топики: product-discovery-loop

Аудио ещё не скачано.

📝 Summary

Summary ещё не сгенерён.

📜 Transcript

Transcript ещё не сделан.

⚙️ Pipeline jobs

Нет job'ов в очереди.

📄 Описание YouTube

Показать
The 37signals developer blog dives deep into technical topics, but some ideas are easier to explain through conversation, a little back-and-forth, and an occasional screen share. That’s why we’re launching RECORDABLES, a new video series hosted by Kimberly Rhodes, who you may know from The REWORK podcast, alongside Fernando Olivares, Lead Programmer on our Mobile Team.

We couldn’t think of a better way to kickoff RECORDABLES than exploring recordables! We’ve had many requests over the years to explain how and why we use the delegated types pattern from Rails in our products and we’re finally explaining it in-depth.

Kimberly and Fernando sit down with Principal Programmer Jeffrey Hardy to unpack the recordables architecture that powers Basecamp and HEY. Jeffrey explains how delegated types made it possible to scale Basecamp for over a decade without constant rewrites. The discussion explores why this approach makes copying, version history, timelines, and mobile support dramatically easier, along with the tradeoffs and learning curve. We’re sharing a behind-the-scenes look at how 37signals builds and evolves complex products with a small team and the Rails pattern that helps make that possible.

*Timestamps*

00:00 – Introduction
01:20 – What “recordables” are and why they matter
02:15 – The delegated type hierarchy
04:15 – The challenge with single-table inheritance
09:05 – Organizing recordables and recordings
11:45 – Tracking change history with recordables and events
22:40 – Copying and moving content efficiently
27:54 – Pagination and querying across content types
34:00 – The learning curve with delegated types
39:54 – Building new features faster with reusable behavior
43:03 – Long-term scalability and performance

*Documentation on delegated types*

https://api.rubyonrails.org/classes/ActiveRecord/DelegatedType.html
https://guides.rubyonrails.org/association_basics.html#delegated-types

For the full episode transcript, visit https://dev.37signals.com/the-rails-recordables-pattern/