In meinem Projekt habe ich ein Benutzermodell und ein Werbemodell. Das Benutzermodell enthält auch die Admins. Ich möchte Routen so einrichten, dass bei der Anmeldung eines Administrators alle URLs "/ admin" enthalten. Ich bin neu in Schienen und habe Probleme mit dem gleichen. Wenn sich beispielsweise ein regulärer Benutzer anmeldet, lautet die URL/advertisements /: id/show, aber wenn sich ein Administrator anmeldet, wird die URL zu/admin/advertisements /: id/show. Ich habe viele Methoden ausprobiert, konnte aber keine Lösung finden. Meine Benutzermigrationsdatei wird wie folgt:Schienen Hinzufügen/Admin zu Routen, wenn der Administrator sich anmeldet
class CreateUsers < ActiveRecord::Migration[5.1]
def change create_table :users do |t| t.string :first_name, limit: 15, null: false t.string :last_name, limit: 15 t.string :username, limit: 20 t.string :email, null: false t.string :password_digest t.boolean :approved, default: false t.boolean :admin, default: false t.timestamps end end end
Meine Anzeigen Migrationsdatei ist:
class CreateAdvertisements < ActiveRecord::Migration[5.1]
def change
create_table :advertisements do |t|
t.string :name, null: false
t.text :description, null: false
t.integer :price, null: false
t.string :location, null: false
t.integer :user_id
t.boolean :approved, default: false
t.timestamps
end
add_index("advertisements", "user_id")
end
end
die Routen-Datei (routes.rb) hat den Code
resources: users
resources: advertisements
Gibt es eine Möglichkeit, es zu tun?
Haben Sie getrennte Wege zu separaten Controller führen oder wollen Sie gleichen Controller mit verschiedenen Routen zugänglich sein wollen? – AntonTkachov
Ich möchte, dass die gleichen Controller über separate Routen erreichbar sind, so wie die Werbung sowohl vom Administrator als auch vom Benutzer, der sie veröffentlicht hat, gelöscht werden muss. –
Auf der einen Seite ja ... aber auf der anderen Seite sollte Benutzer Zugriff nur auf seine eigenen Beiträge haben, während Admin - auf alle Beiträge. Ich gehe normalerweise mit 2 Varianten: 1. Entweder separaten Admin-Panel-Namespace oder 2. Verwenden Sie die gleichen Routen, aber verstecken Sie einfach Admin-Logik für keine Admin-Benutzer. Was sind deine Gründe, 2 Routen für 1 Controller zu haben? Admin/None Admin-Rollen können problemlos auf einer Route behandelt werden – AntonTkachov