Tôi đang viết một công cụ Rails có thể định cấu hình. Tôi có một tùy chọn cấu hình authentication_helper
để xác định trình trợ giúp nào nên được gọi trong một before_action
trong tất cả các trình điều khiển cần xác thực.Truy cập người trợ giúp từ ứng dụng gốc trong công cụ Rails bị cô lập
Vấn đề là tôi không có quyền truy cập vào trình trợ giúp của ứng dụng mẹ từ bộ điều khiển của động cơ. My understanding là điều này xảy ra vì động cơ bị cô lập.
Tôi đã xem xét sử dụng một khối thay vì tên phương thức, nhưng tôi không chắc liệu điều đó có hiệu quả không, hoặc nếu tôi có thể truy cập logic ủy quyền từ bên ngoài bộ điều khiển của tôi.
Active Admin, mà tôi đã sử dụng trong quá khứ, có tùy chọn cấu hình tương tự. Tôi đã nhận thấy rằng động cơ của họ không bị cô lập, vì vậy có lẽ tôi đang vượt qua tầm quan trọng của sự cô lập động cơ?
Có cách nào thanh lịch để có được lợi ích của việc cô lập động cơ trong khi cũng cho phép loại tùy chỉnh này không? Hay tôi chỉ nên bỏ qua cô lập hoàn toàn?
EDIT # 1
Brad Werth chỉ tôi đi đúng hướng, vì điều này làm việc với một bộ điều khiển thường xuyên kế thừa từ ApplicationController::Base
:
module MyBigFancyEngine
class Engine < Rails::Engine
isolate_namespace MyBigFancyEngine
config.to_prepare do
# Make the implementing application's helpers available to the engine.
# This is required for the overriding of engine views and helpers to work correctly.
MyBigFancyEngine::ApplicationController.helper Rails.application.helpers
end
end
end
Tuy nhiên, ApplicationController
kế thừa động cơ của tôi từ RocketPant::Base
, mà không cung cấp phương thức helper
. Tôi đã cố gắng sử dụng một đơn giản include
(hoạt động tốt cho bộ điều khiển thông thường), nhưng điều đó không làm việc hoặc là (bộ điều khiển không thể tìm thấy người trợ giúp).
Bất kỳ ý tưởng nào?
bạn đã thử phương pháp tiếp cận của mình chưa? bạn đã có một cái nhìn? –