Votre schéma de base de données ne se conforme pas vraiment avec les conventions Rails prescrits et vous aurez probablement une difficile de faire le travail par défaut has_many par défaut. Avez-vous essayé de jouer avec les options SQL personnalisées avec pensée?
Si vous ne parvenez pas à faire fonctionner l'association has_many
intégrée, vous devrez créer la vôtre. Je définirais les méthodes books
et books=
sur votre modèle de bibliothèque et, à l'intérieur, définirais un attribut virtuel, que vous enregistreriez ensuite en tant que tableau dans la base de données. Peut-être quelque chose comme ceci:
class Book > ActiveRecord::Base; end
class Library > ActiveRecord::Base
before_save :serialize_books
def books
@books || nil
end
def books=(new_books)
@books = new_books
end
private
def serialize_books
@attributes['books'] = "[" + @books.collect {|b| b.id }.join(',') + "]"
end
end
que jusqu'à il n'y aurait pas retirer le dataIf vous vouliez aller encore plus Gung Ho et de soutenir seule requête trouver des opérations, vous pouvez utiliser certaines fonctions SQL personnalisée dans un champ ou passer outre trouver et ajoutez-le aux options par défaut. Commentez si vous voulez de l'aide pour tout ça!
Comment placer un tableau de n'importe quoi dans une colonne de base de données? –
Il est stocké sous forme de chaîne "[3,4,5]" –