Ich bin mir nicht sicher, ob eine Erklärung dafür bereits dokumentiert ist, vielleicht im Nachfragen die falsche Frage, aber ich hoffe, jemand kann mir bei diesem Problem helfen.Einen Wert in einem serialisierten Modell-Array finden
Ich suche nach einem Wert innerhalb eines Modellarrays. Mein Modell sieht wie folgt aus:
class Product < ActiveRecord::Base
# product_category :text
serialize :product_category, Array
end
Ein Beispiel für einen Eintrag:
#<Product:0x0055cd0c1382b8> {
:id => 42266,
:product_category => [
[0] 8, [1] 3
]
}
Ich brauche alle Produkte zu finden, die 3 oder eine Kombination von 3 und anderen Kategorien product_category
gehören.
habe ich versucht, so etwas wie
ap Product.where(product_category: [8])
aber etwas zurückgeben tut.
Wenn diese Frage bereits gestellt wurde, bitte leiten Sie mich an die richtige Antwort. Wenn nicht, wird jede Zeit, die mir geholfen wird, sehr geschätzt.
Running:
- Rails 4.2.4
- Rubin 2.3.1.p112
- SQLite3
Es sieht so aus, als sollten Sie Ihre Datenbank neu strukturieren und statt Produktspalten eine Produktkategoriespalte verwenden, um 'has_and_belongs_to_many' oder' has_many: through' mit Produktkategorien zu verwenden. Dies würde es einfacher machen, zu suchen. –
Suche nach serialisierten Feld ist unmöglich. Sie sollten Ihre Datenbank neu strukturieren, wie es @ j-dexx vorgeschlagen hat. – mudasobwa
Welche Datenbank benutzen Sie? Welcher Typ ist die Spalte? Wenn Sie in Postgres die JSON-Stilspalte verwenden, können Sie Array-Inhalte abfragen. –