2012-08-05 63 views
0

我想給用戶添加圖像的能力,但想允許然後將其中一個圖像添加到文章。我很好奇,是否必須爲Image和ArticleImage創建兩個單獨的模型?如果我可以使用相同的Image模型來完成這兩項工作,那將是非常好的,但到目前爲止,我認爲可以這麼做的唯一方法就是兩個獨立的模型,就像這樣。用戶有很多圖像和user.article有很多圖像

的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

只需一個Image模型即可輕鬆完成此操作。

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

在最後一步,有多種方法已創建的圖像分配給特定的文章。您可以在圖像控制器中創建自定義路線和自定義方法來處理此問題。

+0

我看到你要去那裏,但似乎我失去了/用戶/ 1 /圖像路線與此方法?還輸/ users/1/articles路線? – botbot 2012-08-05 18:11:55

+0

您仍然可以按照這種方式製作路線,而不會影響模型。 – 2012-08-05 18:17:00