2009-04-15 52 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

相关问题