我想让用户能够添加图片,但是希望允许其中一个图片添加到文章中。我很好奇我是否必须为Image和ArticleImage创建两个单独的模型?如果我可以使用相同的Image模型来完成这两项工作会很棒,但到目前为止我能想到的唯一方法就是两个独立的模型,就像这样。
的routes.rb
resources :users do
resources :images
resources :articles do
resources :articles_images
end
end
我觉得很可能会建议不要做这样的事情,虽然它很诱人:
resources :users do
resources :images
resources :articles do
resources :images
end
end
我的假设是,如果我采用第一种方法,articles_images只是一个连接表来存储image_id和article_id,是吗?谢谢!
答案 0 :(得分:0)
只需一个图像模型即可轻松完成此操作。
users.rb的
class User < ActiveRecord::Base
has_many :images
end
Article.rb
class Article < ActiveRecord::Base
has_and_belongs_to_many :images
end
Image.rb
class Image < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :articles
的routes.rb
resources :users
resources :images
resources :articles
在图像控制器中,通过当前用户添加图像 -
def create
@image = current_user.images.build(params[:image])
对于最后一步,有多种方法可以将已创建的图像分配给特定文章。您可以在图像控制器中创建自定义路径和自定义方法来处理此问题。