2012-04-03 12 views
4

Ich möchte eine übergeordnete Anwendung erstellen, die sich mit der Benutzerauthentifizierung befasst. Ich möchte dann verschiedene Mountable Engines (wie ein Blog, ein Kontaktverzeichnis usw.) erstellen, die nach Bedarf hinzugefügt werden können. Das bedeutet, dass ich von der Mountable Engine auf die Benutzerauthentifizierungsdaten (Admin-Rechte usw.) zugreifen muss.Rails 3.1 - Zugreifen auf übergeordnete Anwendungsmodelle von Mountable Engine

Ich würde gerne wissen, wie (und wenn) dies möglich ist, da es offensichtlich ist, dass die Engine-Modelle in der übergeordneten Anwendung zugänglich sind, in die es integriert ist, aber nicht umgekehrt.

Wenn diese Frage gestellt wurde here, die Antwort gegeben zeigt, wie alle Daten, nicht Dinge von Helfern (wie current_user) erhalten.

Als es here gefragt wurde, schien es Namespacing zu bedecken, nicht das, wie man auf Funktionen und Variablen zugreift (es sei denn, ich verpasse etwas).

Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Durch den Entwurf werden Mountable Engines von ihren Eltern isoliert. Sie können jedoch theoretisch Teile des Parents über eine REST-API unter Verwendung von ActiveResource o.ä. Sie können auch eine "Full Engine" verwenden, die als eine Art Plugin statt als Mountable fungiert - Rails 3.1: Engine vs. Mountable App

+0

Ich habe diese Artikel gelesen, und tat es wieder nach Ihrer Antwort. Du hast Recht, dass es scheint, dass die Dinge in der "Full Engine" mehr "ausgesetzt" sind, und gewährte, dass meine Engines keine unabhängigen Apps sind. Aber ist es nicht intuitiver, sie mit eigenen Javascripts und CSS-Dateien separat zu benennen und als unabhängig zu betrachten? –

+1

Vielleicht, aber das scheint eine Frage der Meinung zu sein. Sie können eine ähnliche Sache mithilfe des Ansatzes "Full Engine" mit Namespaced-Routen erreichen und Hooks hinzufügen, um Migrationen und Assets (JS, CSS, Images) von der Engine in das übergeordnete Verzeichnis als Teil einer Rake/Capistrano-Task vor der Bereitstellung zu kopieren. Das beliebte 'Spree'-Juwel macht das und es funktioniert ziemlich gut für mich. – PinnyM

+0

Danke für Ihre Hilfe PinnyM –

Verwandte Themen