Ich bin auf der Suche nach einer ähnlichen Möglichkeit, die Datenbank like this abzufragen, aber zu kämpfen, wie man geht, was ich will.Abfragen einer Rails-DB-Spalte
Ich bin nicht nur auf der Suche nach der Antwort, ich suche auch, wo finden Sie die Methoden zu verwenden. Ich habe nach Postgres DB-Abfrage, Schienen-DB-Abfrage gesucht, aber nichts zeigt sich, das stimmt, was ich will, oder sogar schließen.
foo = "a,b,c,d"
b.bar #=> "b,d,a,f,z" Code shorten for the B Class.
B.where('bar like ?', "%#{foo}")
Ich weiß, dass nichts zurückgibt. Ich möchte, wenn einer der foo
Wert in b.bar
Spalte enthalten ist, dann zurückgeben.
Wenn foo = "a"
, würde ich ein Ergebnis erhalten, aber foo
kann mehr als einen Wert haben.
Im mit Ruby 2.2.5. Rails 5. DB: PostgreSQL
Wird auf Ruby 2.3 aktualisieren, wenn der Code sehr einfach ist.
Dies kann durch Verwendung mehrerer 'LIKE'-Bedingungen kombiniert mit' OR' oder durch einen Regexp-Ausdruck erfolgen. Aber ist es das wirklich wert? Diese Art von Abfragen ist normalerweise langsam, weil sie keinen Index verwenden können. Eine viel bessere Lösung bestünde darin, die Daten zu normalisieren und eine 'foos'-Tabelle mit einer 'has_and_belongs_to_many'-Zuordnung zu, B' zu haben. Möglicherweise möchten Sie das Datenbankschema ändern. – spickermann
Ich dachte das Gleiche. Möglicherweise muss ich das Schema ändern, wie du es gesagt hast. – Sylar