我对 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
然后我做了 rake db:migrate
现在,当我更新图像时,我会显示复选框以连接文章和图像:
%div
- @articles.each do |article|
= check_box_tag "article_ids[]", article.id
= article.name
当我检查第一个复选框并更新它无法创建关联时,错误是:
图片控制器中的 ActiveRecord::StatementInvalid#update
Mysql2::Error: 表 '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
: 表数据不可编辑,因为没有为表定义主键