HABTM と rails 3.2.11 の関連付けについて少し混乱しています。
私は画像モデルを持っています:
class Image < ActiveRecord::Base
attr_accessible :description, :name, :image, :article_ids
has_and_belongs_to_many :articles
end
そして記事モデル:
class Article < ActiveRecord::Base
has_and_belongs_to_many :images
attr_accessible :content, :name, :image_ids
end
移行を作成しました:
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
それから私は db:migrate をかき集めました
画像を更新するときに、記事と画像を接続するためのチェックボックスを表示するようになりました。
%div
- @articles.each do |article|
= check_box_tag "article_ids[]", article.id
= article.name
最初のチェックボックスをオンにして更新すると、関連付けを作成できません。エラーは次のとおりです。
ActiveRecord::StatementInvalid in ImagesController#update
Mysql2::エラー: テーブル 'project_development.articles_images' が存在しません: SELECT articles
.* FROM articles
INNER JOIN articles_images
ON articles
. id
= articles_images
. article_id
どこarticles_images
で。image_id
= 78
パラメータは次のとおりです。
{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"5qUu72d7asba09d7zbas7a9azsdas8a8dss", "image"=>{"name"=>"Test", "description"=>"Testdescription ", "article_ids"=>[]}, "article_ids"=>["1"], "commit"=>"更新イメージ", "id"=>"78-test"}
MySQL Workbench にテーブルが表示されますが、次のように表示されているため、調べることができません。
エラー: project_development
。images_articles
: テーブルに主キーが定義されていないため、テーブル データは編集できません