Je suis un peu confus au sujet d'une association HABTM avec rails 3.2.11.Peut implémenter une association has_and_belongs_to_many
J'ai un modèle d'image:
class Image < ActiveRecord::Base
attr_accessible :description, :name, :image, :article_ids
has_and_belongs_to_many :articles
end
Et un modèle de l'article:
class Article < ActiveRecord::Base
has_and_belongs_to_many :images
attr_accessible :content, :name, :image_ids
end
J'ai créé une migration:
class CreateImagesArticlesTable < ActiveRecord::Migration
def self.up
create_table :images_articles, :id => false do |t|
t.references :image
t.references :article
end
add_index :images_articles, [:image_id, :article_id]
add_index :images_articles, [:article_id, :image_id]
end
def self.down
drop_table :images_articles
end
end
Je ne rake db: migrate
Maintenant j'affiche chec kboxes de se connecter des articles et des images lorsque je mets à jour une image:
%div
- @articles.each do |article|
= check_box_tag "article_ids[]", article.id
= article.name
Quand je vérifie la première case et mise à jour ne peut pas créer l'association, l'erreur est:
ActiveRecord :: StatementInvalid à ImagesController # mettre à jour
mysql2 :: erreur: table 'project_development.articles_images' does not exist. SELECT * FROM articles
articles
INNER JOIN articles_images
SUR articles
. id
= articles_images
. article_id
O WH articles_images
. image_id
= 78
Params est:
{ "UTF8" => "✓", "_method" => "put", "authenticity_token" => "5qUu72d7asba09d7zbas7a9azsdas8a8dss", "image" => {"name" => "Test", "description" => "Description du test", "article_ids" => []}, "article_ids" => ["1"], "commit" => "Update image ", " id "=>" 78-test "}
Je vois la table dans MySQL Workbench, mais je ne peux pas regarder dedans car elle saisit:
Erreur: project_development
. images_articles
: données de table n'est pas modifiable car il n'y a pas de clé primaire pour la table
witg Les rails HABTM ne créent pas de table supplémentaire. Utilisez 'has_many through' à la place – Eru