gpt4 book ai didi

mysql - 可以实现 has_and_belongs_to_many 关联

转载 作者:行者123 更新时间:2023-11-29 14:06:27 25 4
gpt4 key购买 nike

我对 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

当我选中第一个复选框并更新它时,无法创建关联,错误是:

ImagesController#update 中的 ActiveRecord::StatementInvalid

Mysql2::错误:表“project_development.articles_images”不存在:SELECT articles.* FROM articles INNER JOIN articles_images ON articles.id = articles_images.article_id WHERE articles_images.image_id = 78

参数是:

{"utf8"=>"✓", “_method”=>“放置”, “authenticity_token”=>“5qUu72d7asba09d7zbas7a9azsdas8a8dss”, "图像"=>{"名称"=>"测试", "描述"=>"测试描述", “article_ids”=>[]}, “article_ids”=>[“1”], "提交"=>"更新图像", “id”=>“78-测试”}

我在 MySQL Workbench 中看到了该表,但我无法查看它,因为它说:

错误:project_developmentimages_articles:表数据不可编辑,因为没有为表定义主键

最佳答案

迁移错误,表名连接了两个模型名称的复数,但它们是按字母顺序排列的,即是 articles_images 而不是 images_articles

无论哪种方式,最好有一个连接模型,然后是一个带有 :through 选项的 has_many

关于mysql - 可以实现 has_and_belongs_to_many 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com