2012-11-15 66 views
0

我有2個型號,一個通過關係:副模型和更新屬性

PortfolioItem 
has_many :portfolio_item_images 
has_many :images, :through => :portfolio_item_images 

PortfolioItemImage 
belongs_to :image 
belongs_to :portfolio_item 

我想投資組合項目圖像組合項關聯,並設定了投資組合的物品圖像的位置。

現在我在做這樣的:

i13 = PortfolioItem.create({:name => 'Portfolio Item 1'}) 
i13_img01 = Image.find_by_image_name('Portfolio_Item_Image.jpg') 
i13.images << i13_img01 
i13_portimg01 = i13.portfolio_item_images.find_by_image_id(i13_img01.id) 
i13_portimg01.update_attributes(:position => 1) 

這是頗爲曲折,因爲我設置的關係,然後通過記錄從我的圖片ID查找,然後設置在投資組合中的位置項目圖像。

我有一種感覺,有一個更清潔的Ruby/Rails的方式與ActiveRecord這樣做。但我沒有在Google上找到任何內容。每次我谷歌協會,它通常是彈出的Rails指南,我找不到那裏的信息。

另外,我對Image模型沒有太多的控制。

謝謝你的時間!

更新: 該圖片以前也是創建。所以我不能通過PortfolioItem創建它,然後添加屬性。謝謝!

回答

0

我覺得這個應該符合你的需要:

i13 = PortfolioItem.create({:name => 'Portfolio Item 1'}) 
i13.portfolie_item_images.create(image: Image.find_by_image_name('Portfolio_Item_Image.jpg'), 
           position: 1) 
+0

嗨阿德里安,感謝您的輸入。但是,圖像對象是以前創建的。我將編輯我的問題來突出顯示。再次感謝! –

+0

我沒有試圖創建圖像對象,我仍然像你一樣使用'Image.find_by_image_name'。 –

+0

謝謝! –