我尝试使用正确的关联来设置我的模型,我已经变得有点不稳定了,我有3个模型如下
class Image < ActiveRecord::Base
has_many :categories
end
class Category < ActiveRecord::Base
has_many :image_categories
has_many :images, through: :image_categories
end
class ImageCategory < ActiveRecord::Base
# Holds image_id and category_id to allow multiple categories to be saved per image, as opposed to storing an array of objects in one DB column
belongs_to :image
belongs_to :category
end
ImageCategory
表是我的联接表,因为我看到它将image_ids
所有category_ids
与Image
相对应,因为Categories
可以有多个permit_params :id, :title, :description, :photo,
category_ids: []
form html: { multipart: true } do |f|
inputs do
f.semantic_errors
f.input :title
f.input :description, as: :text, input_html: { rows: 10, cols: 10 }
f.input :categories, as: :check_boxes
end
end
}
创建图像的表单
image
当我尝试创建can't write unknown attribute `image_id`
时,我收到以下错误:
reflect
我在这里犯了什么错误?
答案 0 :(得分:4)
我认为您设置关联的方式导致了这个问题。
class Image < ActiveRecord::Base
has_many :image_categories
has_many :categories, through: :image_categories
end
class Category < ActiveRecord::Base
has_many :image_categories
has_many :images, through: :image_categories
end
class ImageCategory < ActiveRecord::Base
belongs_to :image
belongs_to :category
end
您当前的协会所描述的是,某个类别可以通过image_categories包含许多图片,但图片和图片类别通过模型中的类别关联,而这与我认为您不打算相关。
答案 1 :(得分:0)
我可以看到,图像模型中存在错误
class Image < ActiveRecord::Base
has_many :categories, through: :image_categories
has_many :image_categories
end
希望这能帮到你!!!
答案 2 :(得分:0)
只是要添加,在这种情况下不需要您的加入模型ImageCategory
。查看has_and_belongs_to_many
关联(HABTM)。
has_many:through
在您需要向除ImageCategory
和ImageId
以外的CategoryId
模型添加附加属性的情况下非常有用。
但是,在您的方案中,HABTM
就足够了。