[RUBY] [Rails] Ich habe den Unterschied zwischen Ressourcen und Ressourcen untersucht

Ich bin ein Anfänger mit "super", der jeden Tag mit Rails zu kämpfen hat. Ich habe es vor einigen Wochen im Text gelesen, und wenn ich Ressourcen für das Routing verwende, weiß ich nicht, was es ist, aber ich erinnere mich, dass die Aktion und die HTTP-Methode miteinander verbunden sind, und ich habe weiterhin Ressourcen eingegeben, ohne den Grund zu kennen.

Natürlich gab es einen Moment, in dem ich so festgefahren und verstanden war, also dachte ich, ich würde mich hinsetzen und mich Ressourcen (Plural) und Ressourcen (Single) stellen, also schrieb ich diesen Artikel.

Was sind Ressourcen (Plural) überhaupt?

Eine Ressource ist eine Reihe von Informationen, die in einer Tabelle in der Datenbank gespeichert sind. Es ist eine sehr praktische Funktion, mit der Sie eine "RESTful" -App erstellen können, indem Sie mehrere Routen definieren, indem Sie Ressourcen in eine Zeile schreiben.

Wenn Sie keine Ressourcen verwendet haben

routes.rb


Rails.application.routes.draw do
  get 'tweets'     => 'tweets#index'
  get 'tweets/:id' => 'tweets#show'
  get 'tweets/new' => 'tweets#new'
  post 'tweets' => 'tweets#create'
  get 'tweets/:id/edit' => 'tweets#edit'
  patch 'tweets/:id'  => 'tweets#update'
  delete 'tweets/:id' => 'tweets#destroy'
end

Ich muss alle Beschreibungen manuell eingeben, was sehr verwirrend ist. Allein damit scheint es für einen halben Tag zusammenzubrechen.

Also versuchte ich unter Verwendung der gemunkelten Ressourcen, das Routing zu beschreiben,

routes.rb


Rails.application.routes.draw do
  resources :tweets
end

Hochwertig. Wenn ich das Terminal überprüfe,

Terminal


tweets     GET    /tweets(.:format)          tweets#index
           POST   /tweets(.:format)          tweets#create
new_tweet  GET    /tweets/new(.:format)      tweets#new
edit_tweet GET    /tweets/:id/edit(.:format) tweets#edit
tweet      GET    /tweets/:id(.:format)      tweets#show
           PATCH  /tweets/:id(.:format)      tweets#update
           PUT    /tweets/:id(.:format)      tweets#update
           DELETE /tweets/:id(.:format)      tweets#destroy

Ist das Routing für die Durchführung der CRUD-Verarbeitung nicht hervorragend abgeschlossen? Das ist praktisch.

Was ist dann eine Ressource (Einzelform)?

Hier ist der Typ, der mich stört. Tatsächlich gibt es auch eine Methode namens Ressource, die nicht nur im Plural, sondern auch in Singularform beschreibt. Lass es uns trotzdem überprüfen.

Wenn Sie sich den Inhalt des Routings mithilfe von Ressourcen ansehen,

routes.rb


Rails.application.routes.draw do
  resource :tweet #resource(Einzelne Form)に合わせて、モデル名もtweetとEinzelne Formにしています!
end

Auf den ersten Blick sieht das Routing fast gleich aus. Wenn Sie jedoch das Terminal überprüfen, werden Sie feststellen, dass es einige Unterschiede zu dem Zeitpunkt gibt, an dem Sie Ressourcen geschrieben haben (Plural).

Terminal


new_tweet  GET    /tweet/new(.:format)   tweets#new
edit_tweet GET    /tweet/edit(.:format)  tweets#edit
tweet      GET    /tweet(.:format)       tweets#show
           PATCH  /tweet(.:format)       tweets#update
           PUT    /tweet(.:format)       tweets#update
           DELETE /tweet(.:format)       tweets#destroy
           POST   /tweet(.:format)       tweets#create

Unterschiede zwischen Ressourcen und Ressourcen

Es gibt zwei Hauptunterschiede: ① Gibt es eine Indexaktion? ② Gibt an, ob Folgendes in die URL </ strong> aufgenommen werden soll ist.

Tweets benötigen eine Listenfunktion. Wenn Sie sie also verwenden möchten, sollten es Ressourcen sein. Für Dinge, die nicht nach Index aufgelistet werden müssen, wie z. B. das Profil eines Benutzers, ist es jedoch besser, Ressourcen zu verwenden.

Im tatsächlichen Betrieb denke ich, dass es schwierig ist, sie richtig zu verwenden, aber in einfachen Worten, Bei mehreren in der Anwendung vorhandenen Ressourcen → Ressourcen Wenn die App nur eine Ressource enthält → Ressource Ich denke, es ist okay, so zu verstehen.

Mitglied und Sammlung

Jetzt kennen Sie den Unterschied zwischen Ressourcen und Ressourcen, es sind bereits 100 Personen! </ strong> Es ist 20 Millionen Jahre zu früh. Die einzigen Aktionen, die mithilfe von Ressourcen definiert werden können, sind die sieben oben aufgeführten Hauptaktionen.

"Ich möchte eine Follow-Funktion hinzufügen ..." "Ich frage mich, ob die Suchfunktion unmöglich ist ..." Wenn Sie aus 7 grundlegenden Aktionen wie z. B. Funktionen hinzufügen und diese hinzufügen möchten, sind dies bequemere Funktionen "Mitglied" und "Sammlung" </ strong> es gibt.

Was ist ein Mitglied?

Stellen Sie sich vor, Sie implementieren eine Funktion zur Nachverfolgung von Benutzer zu Benutzer. Natürlich kann das Benutzermodell selbst auch Ressourcen zum Definieren des Routings verwenden (da die App mehrere Benutzer enthält).

Identifizieren Sie die IDs des Benutzers, ordnen Sie sie zu und legen Sie Aktionen für die einzelnen Ressourcen fest, die durch die IDs angegeben werden!

routes.rb


Rails.application.routes.draw do
  resources :users do
    get :follows, on: :member
    get :followers, on: :member
  end
end

Hallo das ist alles. Wenn ich das Terminal überprüfe,

Terminal


follows_user    GET   /users/:id/follows(.:format)    users#follows
followers_user  GET   /users/:id/followers(.:format)  users#followers
#Im Folgenden werden 7 Aktionen weggelassen

Erstaunlicherweise können Sie Follower und Follower-Aktionen für einzelne Ressourcen festlegen, einschließlich der Benutzer-ID!

Was ist Sammlung

Fahren Sie dann mit der Sammlung fort. Der Unterschied zum Mitglied besteht darin, dass Sie Aktionen für die gesamte Ressource festlegen können. Lassen Sie uns im Detail erklären.

Was das Routing betrifft,

routes.rb


Rails.application.routes.draw do
  resources :users do
    get :search, on: :collection
  end
end

Es ist eine jährliche Veranstaltung geworden. Lassen Sie uns das Terminal überprüfen.

Terminal


search_users   GET    /users/search(.:format)    users#search
#Im Folgenden werden 7 Aktionen weggelassen

Wenn Sie die Sammlung verwenden, können Sie ohne die: id in der URL zur Suchaktion weiterleiten.

abschließend

Vielen Dank für Ihre lange und unkoordinierte Erklärung. Während ich mich erklärte, gab es einen Teil, der mein Verständnis vertiefte. Ich denke, je mehr ich es benutze, desto mehr wird es meinen Körper durchdringen. Ich hoffe, das hilft Ihnen beim Programmieren.

Recommended Posts