0

我想让用户能够添加图像,但想允许随后将其中一个图像添加到文章中。我很好奇是否必须为 Image 和 ArticleImage 创建两个单独的模型?如果我可以使用相同的 Image 模型来完成这两项工作,那就太好了,但到目前为止,我能想到的唯一方法是两个独立的模型,就像这样。

路线.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 的连接表,对吗?谢谢!

4

1 回答 1

1

您只需一个图像模型即可轻松完成此操作。

用户.rb

class User < ActiveRecord::Base
    has_many :images
end

文章.rb

class Article < ActiveRecord::Base
    has_and_belongs_to_many :images
end

图片.rb

class Image < ActiveRecord::Base
    belongs_to :user
    has_and_belongs_to_many :articles

路线.rb

resources :users
resources :images
resources :articles

在您的图像控制器中,通过您当前的用户添加您的图像 -

def create
    @image = current_user.images.build(params[:image])

对于最后一步,有多种方法可以将已创建的图像分配给特定文章。您将在图像控制器中创建自定义路由和自定义方法来处理此问题。

于 2012-08-05T06:22:18.813 回答