Ich wollte eine Artikel-Posting-App mit Rails erstellen, und als ich Scaffold einführte, um das Verfahren zu verkürzen, stolperte ich über das Verbinden von Posts und Benutzern, sodass ich mein Wissen teilte Wenn Sie mehr wissen möchten, lesen Sie bitte dieses Dokument.
Generieren Sie zunächst eine Buchungsfunktion mit Scaffold. Wahnsinnig einfach. db: migrieren Vergiss nicht
$ rails g scaffold Post content:string
$ db:migrate
devise Siehe diesen Artikel. Sehr leicht zu verstehen
app/models/user.rb
class User < ApplicationRecord
#Fügen Sie Folgendes hinzu.Vergessen Sie nicht den Plural s
has_many :posts, dependent: :destroy
end
app/models/post.rb
class Tip < ApplicationRecord
#Fügen Sie Folgendes hinzu.Stellen Sie aus Sicherheitsgründen sicher, dass leere Beiträge abgelehnt werden
belongs_to :user
validates :content, presence: true
end
$ rails g migration add_user_id_to_posts user_id:integer
$ rails db:migrate
*** Dies vervollständigt die Verbindung zwischen dem Benutzermodell und dem Post-Modell in Bezug auf den Mechanismus ***
app/controllers/posts_controller.rb
private
# Use callbacks to share common setup or constraints between actions.
def set_post
@post = Post.find(params[:id])
end
# Only allow a list of trusted parameters through.
def post_params
params.require(:post).permit(:content)
end
end
Ändern Sie den oben von Scaffold automatisch generierten Code wie folgt.
app/controllers/posts_controller.rb
private
# Use callbacks to share common setup or constraints between actions.
def set_post
@post = Post.find(params[:id])
end
# Only allow a list of trusted parameters through.
def post_params
params.require(:post).permit(:content).merge(user_id: current_user.id)
end
end
Damit ist der Vorgang abgeschlossen. Lass es uns laufen, gehe zu localhost: 3000 / posts und poste! ‼
Recommended Posts