用户有很多图像和用户。文章有很多图像

时间:2012-08-05 01:58:05

标签: ruby-on-rails ruby

我想让用户能够添加图片,但是希望允许其中一个图片添加到文章中。我很好奇我是否必须为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,是吗?谢谢!

1 个答案:

答案 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])

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