Ich möchte über alle Antworten des Benutzers iterieren und es nach Anzahl der Likes, die eine Antwort erhalten hat, bestellen, aber ich kann nicht herausfinden, wie es geht, @ user.answers.likes funktioniert nicht, ich habe einen Weg gefunden finde alle Antworten des Benutzers, die Likes haben, aber das ist nicht genau das, was ich machen möchte. Danke für Ihre Hilfe.Wie sortiert man die Antworten eines Nutzers nach Likes?
models/answer.rb
class Answer < ApplicationRecord
belongs_to :question
belongs_to :user
has_many :likes, dependent: :destroy
models/user.rb
class User < ApplicationRecord
has_many :answers
has_many :likes
models/like.rb
class Like < ApplicationRecord
belongs_to :user
belongs_to :answer
schema.rb
create_table "answers", force: :cascade do |t|
t.text "content"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "question_id"
t.integer "user_id"
t.boolean "accepted", default: false
t.index ["question_id"], name: "index_answers_on_question_id"
end
create_table "likes", force: :cascade do |t|
t.integer "user_id"
t.integer "answer_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Seien Sie vorsichtig, Sie öffnen eine Tür Injektion SQL, wenn Sie einen String interpolieren direkt in eine Abfrage –
Es ist kein Formular, aber keine Eingabe zu injizieren. Dies ist nur eine Abfrage, damit er die Antworten der Benutzer in der Reihenfolge der Anzahl der vorhandenen Likes anzeigen kann. – toddmetheny
Ja, nur weil das "vorsichtig sein", unter diesen Bedingungen gibt es kein Problem, aber ich denke, es ist gut zu beachten, dass dies unter anderen Bedingungen eine Schwachstelle sein könnte. Wie auch immer, Aleks hat uns nicht gesagt, wie sie '@ user' bekommen, wenn er es so bekommt, dass '@ user.id' geändert werden kann, gibt es ein Problem. Es war nur ein Kommentar, Entschuldigung, wenn ich dich beleidigt habe –