Hướng dẫn RoR đặt một mô hình cho mỗi bảng để ORM hoạt động. Lược đồ DB của tôi có khoảng 70 bảng được chia thành 5 nhóm chức năng (ví dụ, bất kỳ bảng nào được sống trong một và chỉ một nhóm chức năng, và quan hệ giữa các bảng của các nhóm khác nhau được giảm thiểu.) Vì vậy: tôi có nên thiết kế một mô hình không cho mỗi nhóm khái niệm, hay tôi chỉ đơn giản là có 70 mẫu Rails và rời khỏi nhóm 'khái niệm'? Cảm ơn!Thực hành tốt nhất cho thiết kế mô hình trong Ruby on Rails
Trả lời
Tôi trình bày điều này trong một trong các ứng dụng lớn của mình bằng cách chỉ đảm bảo rằng các bảng/mô hình được nhóm theo khái niệm theo tên (với mối quan hệ gần như mô hình bảng 1: 1). Ví dụ:
events
event_types
event_groups
event_attendees
etc...
Bằng cách đó khi tôi đang sử dụng TextMate hoặc bất kỳ thứ gì, các tệp mô hình được phân loại độc đáo với nhau theo loại alpha. Tôi có 80 mẫu trong ứng dụng này và nó hoạt động đủ tốt để giữ mọi thứ được sắp xếp.
Rất có thể, bạn nên có 70 kiểu máy. Bạn có thể không gian tên các mô hình để có 5 không gian tên, một cho mỗi nhóm, nhưng điều đó có thể gây rắc rối nhiều hơn giá trị của nó. Nhiều khả năng, bạn có một số chức năng phổ biến trong mỗi nhóm. Trong trường hợp đó, tôi sẽ tạo một mô-đun cho mỗi nhóm chứa hành vi của nó và bao gồm nó trong mỗi mô hình có liên quan. Ngay cả khi không có chức năng chia sẻ, việc này có thể cho phép bạn nhanh chóng truy vấn một mô hình cho nhóm khái niệm của nó.
Thankyou! Đột nhiên tôi hiểu tại sao tôi có thể muốn sử dụng các mô-đun. Tắt để đọc thêm .. – NickR
Bạn chắc chắn nên sử dụng một mô hình cho mỗi bảng để tận dụng tất cả các phép thuật ActiveRecord.
Nhưng bạn cũng có thể nhóm các mô hình của mình lại với nhau thành các không gian tên bằng các mô-đun và thư mục con, để tránh phải quản lý 70 tệp trong thư mục mô hình của bạn.
Ví dụ, bạn có thể có:
app/models/admin/user.rb
app/models/admin/group.rb
cho các mô hình quản trị :: người dùng và quản trị :: Group, và
app/models/publishing/article.rb
app/models/publishing/comment.rb
cho xuất bản :: Điều và xuất bản :: Bình luận
Và cứ thế ...
Thankyou! Các thư mục con/không gian tên là một giải pháp tốt. Nick – NickR
Có thể có một số ít trường hợp bạn có thể sử dụng bàn phím Rails mô hình thừa kế bảng đơn. Có lẽ tất cả các lớp trong một nhóm chức năng cụ thể có cùng các trường (hoặc gần như giống nhau). Trong trường hợp đó, hãy tận dụng ưu đãi của DRYness STI. Tuy nhiên, khi nó không có ý nghĩa, hãy sử dụng class-per-table.
Trong phiên bản lớp học mỗi bảng, bạn không thể dễ dàng kéo chức năng chung vào lớp cơ sở. Thay vào đó, hãy kéo nó vào một mô-đun. Cấu trúc phân cấp như sau có thể hữu ích:
app/models/admin/base.rb - module Admin::Base, included by all other Admin::xxx
app/models/admin/user.rb - class Admin::User, includes Admin::Base
app/models/admin/group.rb - class Admin::Group, includes Admin::Base
Nếu không biết thêm chi tiết về bản chất của bảy mươi bảng và quan hệ khái niệm của chúng thì không thực sự có thể đưa ra câu trả lời hay. Các bảng kế thừa này có được thiết kế từ đầu không?
Các bảng có liên quan đến một số loại mẫu thừa kế hay không? Rails có thể làm một dạng thừa kế giới hạn. Tra cứu đơn thừa kế bảng (STI).
Cá nhân, tôi sẽ cố gắng tránh làm việc với bảy mươi bảng đơn giản vì đó là rất nhiều công việc - 70 Mô hình & Bộ điều khiển và 4+ lượt xem, người trợ giúp, bố cục và thử nghiệm của chúng chưa đề cập đến bộ nhớ tải vấn đề giữ thiết kế trong ind. Trừ khi tất nhiên tôi đã được trả tiền theo giờ và đủ tốt để bù đắp cho sự lặp lại.
Nó đã được đề cập, thật khó để đưa ra lời khuyên tốt mà không biết lược đồ cơ sở dữ liệu của bạn, tuy nhiên, tôi sẽ dựa vào việc tạo ra hơn 70 mô hình, (một cho mỗi bảng của bạn.)
Bạn có thể thoát khỏi một số mô hình, nhưng với chi phí (không đáng tin cậy) bạn cũng có thể có chúng ở đó.
Bạn không cần tạo bộ điều khiển + lượt xem cho từng mô hình (như answerd bởi srboisvert). Bạn chỉ cần một bộ điều khiển cho mỗi tài nguyên (mà tôi mong đợi là ít hơn rất nhiều so với 70 - có lẽ chỉ có 10 hoặc 15 hoặc để đánh giá theo mô tả của bạn).
Trước khi nhảy vào một làm 70 mô hình, hãy xem xét câu hỏi này để giúp bạn quyết định:
mỗi bảng của bạn có thể được coi là một "đối tượng" ví dụ như một bảng "xe" hoặc là một số trong các bảng cầm chỉ có thông tin về mối quan hệ, tất cả các cột khóa ngoài chẳng hạn?
Trong Rails chỉ các bảng "đối tượng" trở thành mô hình! (Với một số ngoại lệ đối với các loại kết hợp cụ thể) Vì vậy, rất có thể là nếu bạn chỉ có 5 nhóm chức năng, bạn có thể không có 70 mô hình. Ngoài ra, nếu các nhóm chức năng mà bạn đề cập là rất khác nhau, chúng thậm chí có thể phù hợp nhất trong ứng dụng của riêng chúng.
- 1. Cách tốt nhất để thiết kế cơ sở dữ liệu cho Ruby on Rails là gì?
- 2. Thực hành tốt nhất WCF nào bạn làm theo trong thiết kế mô hình đối tượng?
- 3. Thiết lập Vim cho Ruby on Rails
- 4. Thử nghiệm tự động với Ruby on Rails - thực hành tốt nhất
- 5. Distro Linux tốt nhất cho Ruby on Rails?
- 6. IP tốt nhất để Vị trí cho Ruby on Rails
- 7. PHP mẫu thiết kế thực hành tốt nhất
- 8. phương pháp toàn cầu trong Ruby on Rails mô hình
- 9. Thực tiễn tốt nhất về Mô hình Mô-đun Thiết kế Mô-đun ExtJS (JavaScript)
- 10. Công cụ WebSocket Ruby on Rails tốt nhất
- 11. Mô hình sâu làm tổ trong Ruby on Rails
- 12. Xác thực OpenID trong Ruby on Rails
- 13. Thực tiễn tốt nhất trong việc thiết kế mô hình dữ liệu Cassandra là gì?
- 14. Ruby on Rails Tên mô hình số nhiều
- 15. Ruby on Rails - Mô hình và bảng mối quan hệ
- 16. Rails thực hành tốt nhất cho thiết lập hệ thống quản trị phụ trợ?
- 17. Thực hành tốt nhất - Chuyển các biến mẫu hoặc sử dụng các tham số trong khung nhìn Ruby on Rails?
- 18. Lỗi xác thực của Ruby on Rails
- 19. Ruby on Rails: Có tốt hơn để xác thực trong mô hình hoặc cơ sở dữ liệu không?
- 20. Trình thiết kế GUI tốt nhất cho nhật thực?
- 21. Chơi các mô hình thực hành tốt nhất 2.0 mô hình
- 22. Thiết kế cơ sở dữ liệu Thực tiễn tốt nhất
- 23. Ngày phát hành cho Ruby on Rails 3.1
- 24. Thực hành xác thực tốt nhất cho Mô hình và ViewModel
- 25. Các mẫu thiết kế hoặc thực hành tốt nhất cho các kịch bản shell
- 26. Cách tốt nhất để thêm các thuộc tính cho người dùng Model trong Ruby on Rails
- 27. Lỗi khi thiết lập Ruby on Rails
- 28. Xác thực tiện ích trong Paperclip - Ruby on Rails
- 29. Ruby on Rails 301
- 30. Intellisense cho Ruby, Ruby on Rails, Python
Tất nhiên, điều này giải quyết vấn đề gọn gàng. – NickR