2016-03-24 13 views
6

Tôi biết có một số câu hỏi để hiệu ứng này đã có trên StackOverflow, nhưng họ có xu hướng được khá lỗi thời và không giải quyết thỏa đáng như thế nào di cư có nghĩa vụ phải làm việc trong các tình huống sau, mà nên khá phổ biến:Cách chia sẻ cơ sở dữ liệu, di chuyển và mô hình giữa các dự án Rails?

  • Bạn có một số loại ứng dụng, được triển khai trong Rails.
  • Bạn có một số loại ứng dụng quản trị cho dữ liệu của mình và đó là một ứng dụng riêng được triển khai trong Rails.
  • Cả hai ứng dụng đều hoạt động trên cùng một cơ sở dữ liệu và mô hình.

Câu hỏi của tôi là: cách tốt nhất để làm yếu tố mô hình của chúng tôi sao cho cả hai ứng dụng này không phải lặp lại mã mẫu?

Chúng tôi đang quan tâm đến những điều sau đây:

  • Đối với các mô hình chia sẻ, ở đây di cư cơ sở dữ liệu nên sống ở đâu?
  • Điều gì sẽ xảy ra nếu mỗi ứng dụng riêng lẻ muốn thêm các mô hình bổ sung trên các mô hình được chia sẻ? Những di cư này sống ở đâu?
  • Cách tốt nhất để di chuyển các di chuyển hiện có vào kế hoạch di chuyển được chia sẻ được đề xuất là gì?

Cảm ơn.

Trả lời

1

Tôi không biết nếu điều này là cách tiếp cận, và rất thích xem các ý tưởng khác, nhưng những gì chúng ta làm trong một trong những sản phẩm của chúng tôi phù hợp với mô hình này:

Đối với các mô hình chia sẻ, nơi nên cơ sở dữ liệu di cư sống?

Chúng tôi giữ tất cả các di chuyển của chúng tôi trong hệ thống quản trị. Bạn không cần chúng tồn tại hai lần, vì vậy đó là nơi họ đi.

Điều gì xảy ra nếu mỗi ứng dụng riêng lẻ muốn thêm các mô hình bổ sung trên các mô hình được chia sẻ? Những di cư này sống ở đâu?

Chúng tôi chia sẻ tất cả các mô hình. Nó chỉ có thể có liên quan đến một ứng dụng tại thời điểm này, nói - một khái niệm favourited_items chỉ có thể quan trọng đối với người dùng cuối. Nhưng vào một ngày sau đó, quản trị viên có thể muốn biết những gì các mục thường xuyên được yêu thích nhất. Thứ hai, nếu bạn muốn điều tra bất cứ điều gì thông qua giao diện điều khiển, nó thực sự khá hữu ích nếu bạn không cần phải truy cập vào các ứng dụng riêng biệt bởi vì cả hai đều không có mô hình cho mỗi bảng.

Chức năng trong các mô hình được chia sẻ khác nhau trên mỗi ứng dụng phát hiện biến môi trường đường ray mà chúng tôi đã mở rộng để bao gồm nhiều ngữ cảnh hơn. Ví dụ: if Rails.env == 'admin_production'

Cách tốt nhất để di chuyển di chuyển hiện có vào kế hoạch di chuyển được chia sẻ được đề xuất là gì?

Một lần nữa, di chuyển sẽ chỉ tồn tại một lần và cơ sở dữ liệu được chia sẻ biết đã chạy, vì vậy trừ khi bạn đổi tên di chuyển, bạn chỉ cần chọn vị trí và di chuyển tệp.

+0

Cảm ơn, điều đó có ý nghĩa.Bây giờ để chia sẻ mô hình, bạn có đang sử dụng thư viện, công cụ Rails hay thứ gì khác không? – Jake

+0

Chúng tôi sử dụng các liên kết tượng trưng (hoặc tương tự) từ các ứng dụng "nô lệ" trỏ đến các tệp chính. – Matt

Các vấn đề liên quan