2012-04-26 32 views
5

Trong một dự án khá lớn, tôi gặp phải một vấn đề về làm tổ mô hình sâu. Ví dụ có tồn tại một mô hình như thế này:Mô hình sâu làm tổ trong Ruby on Rails

class Communication::Conversation::ForProposal < Communication::Conversation::Base 
    ... 
end 

và hơn nữa mỗi lần chúng tôi cần phải xác định tên_bảng, class_name, foreign_keys và vân vân.

Bạn chọn tên thay thế nào và mô hình ý kiến ​​thực sự của bạn như thế nào?

+1

Không mô hình không gian tên. –

+0

@Beerlington? Đôi khi nó có ý nghĩa. Ví dụ: nếu bạn có một số hệ thống con trong dự án bao gồm một số mô hình hoạt động cùng nhau. –

+0

Tôi đã có một hộp thoại với bạn bè của tôi vì vậy chúng tôi kết luận rằng làm tổ là mát mẻ cho các mô hình STI và cho bộ điều khiển, để riêng biệt Admin :: và người sử dụng các bộ phận. Còn gì nữa không? – makaroni4

Trả lời

0

Bạn nên xem xét sử dụng mixin. Nó giúp bạn tổ chức mã của bạn bằng các chức năng, dẫn bạn đến một mã sạch hơn. Trang sau giải thích rõ.

http://juixe.com/techknow/index.php/2006/06/15/mixins-in-ruby/

Tôi đã được nhìn vào một số mã nguồn cho Rails trên GitHub, và nó là rất sạch sẽ. Họ sử dụng rất nhiều mixin.

https://github.com/rails/rails/tree/master/activemodel/lib

+0

Sử dụng mixin không nhóm các mô hình lại với nhau. Tôi có các kết nối bổ sung cho các cơ sở dữ liệu khác, (mặc dù đây là một biện pháp chuyển tiếp), và một số cơ sở dữ liệu có cùng tên bảng, do đó, việc đặt tên cũng khuếch tán các xung đột tên, trong đó mixin không có sự trợ giúp. –

+0

Tôi thấy trong tài liệu của tiện ích REXML một ví dụ về việc thực hiện một REXML bao gồm và sau đó không phải đủ điều kiện cho vùng tên. http://www.germane-software.com/software/rexml/docs/tutorial.html –

0

Trong các phiên bản gần đây của đường ray, bạn có thể không gian tên mô hình của bạn bằng cách đặt chúng trong một thư mục dưới ứng dụng/mô hình. Bạn có thể thử ứng dụng/mô hình/giao tiếp/hội thoại cho các mô hình đó.

+0

Điều đó không giải quyết được vấn đề phải chỉ định không gian tên khi sử dụng các mô hình. –

+0

Tôi không rõ ràng nơi bạn làm và không muốn chỉ định các không gian tên. Nếu đó là khi viết mỗi người trong số họ và nói về những người khác, thì bạn có thể bọc mọi thứ vào một mô-đun để làm rõ. Điều đó sẽ làm cho bất kỳ tham chiếu đến các lớp trong mô-đun không yêu cầu tiền tố. Nếu bạn đang cố gắng giảm nhu cầu chỉ định không gian tên bên ngoài mô-đun, thì bạn cần một cái gì đó như 'include ModuleName', nhưng tôi nghĩ rằng sẽ tải toàn bộ mô-đun vào lớp hiện tại. – LordJavac