2011-06-30 26 views
5

Tôi cần một hệ thống mà người dùng thông thường có thể chỉnh sửa mô hình nhưng chỉnh sửa không thực sự xảy ra cho đến khi được quản trị viên phê duyệt. Tôi tìm thấy một viên ngọc được gọi là paper_trail có phiên bản mô hình nhưng không hỗ trợ cụ thể những gì tôi muốn làm. Tôi tự hỏi làm thế nào những người khác đã xử lý vấn đề này. Tôi nên thêm rằng cũng có các liên kết mà tôi muốn có thể cho người dùng chỉnh sửa cùng một lúc. Họ không phải là rất phức tạp, ví dụ một là bí danh.Cách thiết lập phê duyệt của quản trị chỉnh sửa của mô hình

Phần phức tạp hơn có thể là trường hợp nhiều người dùng chỉnh sửa cùng một mô hình và cố gắng thực hiện một số loại hợp nhất.

+1

từng tìm giải pháp? – ZMorek

Trả lời

1

Một cách tiếp cận sẽ là làm phiên bản với phê duyệt phiên bản.

Mọi chỉnh sửa sẽ tạo phiên bản mới của đối tượng mô hình và các liên kết của đối tượng. Bất cứ lúc nào chỉ có một phiên bản "hiện tại" của bất kỳ đối tượng mô hình nào (và nó là biểu diễn trong cơ sở dữ liệu).

Nếu hai người dùng gửi hai chỉnh sửa riêng biệt, chúng sẽ tạo hai phiên bản "đang chờ xử lý".

Quản trị viên sẽ phê duyệt chỉnh sửa bằng cách di chuyển phiên bản hiện tại sang phiên bản "đang chờ xử lý" mới. Việc hợp nhất cũng có thể được thực hiện, nhưng điều đó có thể rất cụ thể về miền và có thể dẫn đến xung đột, vì vậy việc giữ các phiên bản riêng biệt sẽ là thông minh.

Có một số cách để thực hiện việc này và điều tốt nhất sẽ phụ thuộc vào động thái của tình huống.

Tôi khuyên bạn nên xem cách Git hoạt động và cố gắng lập mô hình hệ thống của bạn sau đó. Một số loại con trỏ đến đối tượng mô hình HEAD của bạn với lịch sử sửa đổi và khả năng di chuyển HEAD đến các bản sửa đổi khác nhau. Việc hợp nhất cũng có thể hoạt động tương tự như Git.

Hy vọng điều đó sẽ hữu ích.

+0

Tôi không nghĩ rằng việc tạo ra các phiên bản khác của các mô hình là cách để đi vì bạn sẽ làm ô nhiễm cơ sở dữ liệu với các phiên bản khác. Tôi thực sự nghĩ rằng có phải là một cách để sửa đổi paper_trail để làm điều này. Giống như tạo một phiên bản mới nhưng không cập nhật đối tượng hiện tại. – hadees

+0

tốt, bạn có thể dọn dẹp các phiên bản cũ với cron hoặc phê duyệt, nhưng về bản chất nó là vấn đề tương tự. Bạn tạo các phiên bản mới, sau đó xóa các phiên bản mà bạn không quan tâm nữa. –

0

Tôi đang xem vấn đề tương tự này, tức là phê duyệt các bản sửa đổi, tôi có thể truy cập this, tôi nghi ngờ bạn có thể làm điều gì đó tương tự với paper_trail.

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