2013-06-14 33 views
6

Tôi có một mô hình Accounts được thiết lập với Devise. Devise sử dụng một vài thuộc tính (chẳng hạn như email, mật khẩu, vv) nhưng tôi có một vài thuộc tính khác mà tôi đã tạo. Khi đăng ký, tôi muốn thiết lập chúng theo cách nào đó.Mở rộng Bộ điều khiển đăng ký phát triển

Làm cách nào để mở rộng bộ điều khiển đăng ký? Tôi hiểu rằng tôi cần phải thực sự tạo một bộ điều khiển mới như sau:

class AccountsController < Devise::RegistrationController 
    def create 
    super 
    end 
end 

Tôi có thể thêm mã của mình ngay sau super không? Tôi nghĩ rằng nó sẽ là quá muộn như các nguồn tài nguyên đã có thể đã được lưu. Cách tốt nhất để làm điều này là gì?

Nếu tôi viết viết từ đầu, làm sao tôi biết rằng tôi không bỏ lỡ bất cứ điều gì mà Devise làm?

Cảm ơn,

Trả lời

2

Nếu bạn muốn viết lại bộ điều khiển từ đầu để kiểm soát đầy đủ, bắt đầu với registration_controller.rb Source Code và thực hiện thay đổi khi cần thiết.

Telling đưa ra để sử dụng điều khiển tùy chỉnh của bạn cũng đơn giản như thay đổi lộ trình:

devise_for :users, :controllers => { :registrations => "users/custom_controller" } 
+0

Đó có phải là cách tốt nhất để mở rộng không? Nó chỉ là hai thuộc tính mà tôi cần phải thêm vào. Ngoài ra, làm thế nào để bạn nói với Devise rằng tôi có một bộ điều khiển mới (để nó không sử dụng một trong đá quý)? – darksky

+0

@Darksky Best? Tôi không chắc chắn lắm. Bạn có thể cho nó một thử và xem như thế nào 'bẩn' nó cảm thấy.Tôi cập nhật câu trả lời của tôi với một lời giải thích về việc nói ra về bộ điều khiển mới của bạn. – Josh

+0

nếu tôi chỉ muốn ghi đè mà không tạo lại tất cả - làm cách nào để thực hiện điều đó? – BKSpurgeon

0

Nếu bạn muốn các lĩnh vực cho người dùng thông tin cung cấp không cần để mở rộng điều khiển.
Nếu bạn muốn thêm tự động, không có lý do không để làm điều đó trong mô hình! (Trừ khi nó phụ thuộc vào phiên làm việc hoặc theo yêu cầu)

Trong trường hợp 1, xem https://github.com/plataformatec/devise#configuring-views

Bạn nên thay đổi đưa ra bộ điều khiển chỉ nếu bạn có ý định thay đổi dòng chảy đăng ký.

+0

Nhưng thực hiện 'before_save' và gọi phương thức thiết lập một số giá trị trong phá vỡ mô hình và đăng ký không hoạt động đúng cách. – darksky

+0

Bạn gặp phải lỗi gì? –

+0

Nó sẽ không cho phép tôi đăng nhập và đăng ký chuyển hướng đến trang chính (w/o xác thực người dùng và vượt qua). Cuối cùng tôi đã thiết lập các giá trị mặc định trong cơ sở dữ liệu. – darksky

9

Theo số Devise documentation, vâng, giống như câu trả lời của Josh, bạn sẽ thay đổi bộ điều khiển. Mặc dù, bạn không phải bắt đầu hoàn toàn từ đầu. Hãy xem tài liệu.

Bạn có thể tạo bộ điều khiển, do đó bạn có thể thêm các tùy chỉnh:

Example: rails generate devise:controllers [scope] 

Vì vậy, bạn có thể chạy sau cho phạm vi người dùng của bạn:

rails generate devise:controllers users 

này mang đến cho bạn điều khiển trong một thư mục có tại đây: ứng dụng/bộ điều khiển/người dùng

Sau đó, thông báo cho các tệp tuyến đường của bạn đến sử dụng bộ điều khiển đó. Cập nhật lộ trình nghĩ ra của bạn để trông giống như sau:

devise_for :users, controllers: { sessions: "users/sessions" } 

Và cuối cùng, sao chép tất cả các chế độ xem. Nếu bạn chưa mở rộng lượt xem, bạn sẽ cần phải làm như vậy. Bộ điều khiển đã thay đổi, vì vậy quan điểm của bạn cũng sẽ cần.

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