2009-04-15 56 views
2

我想在我創建的對象上設置屬性。我覺得這應該工作:如何在創建ActiveRecord對象時設置屬性?

def create 
    @album = Album.new(params[:album]) 
    @album.user = current_user 

    if @album.save 
     flash[:notice] = 'Album was successfully created for ' + current_user.login + '.' 
     redirect_to albums_url 
    else 
     render :action => "new" 
    end 
    end 

但似乎忽視了分配到user領域。有任何想法嗎?

回答

4

假設你的模型是否建立正確的*,這是更好地做:

@album = current_user.albums.build(params[:album]) 

—這將正確填充user_id場爲新專輯到當前用戶的ID。


*喜歡的東西:

class User < ActiveRecord::Base 
    has_many :albums 
    . 
    . 
    . 
end 

class Album < ActiveRecord::Base 
    belongs_to :user 
    . 
    . 
    . 
end 
+0

是的,我的類層次結構設置正確。那麼,我應該用這個來代替Album.new的電話嗎?當我嘗試的時候,我爲#<用戶:0x353c3a4> – pkaeding 2009-04-16 02:09:36

1

您的相冊遷移或您的相冊模型是否引用user_id或與用戶的關係?

如果沒有,即使分配它,數據庫也不會保存該信息。

+0

嗯,這是令人尷尬的。我忘了運行遷移腳本來建立數據庫中的關係。謝謝! – pkaeding 2009-04-16 02:29:55

相關問題