如何在创建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字段的分配。 有任何想法吗?

假设您的模型关系设置正确*,最好这样做:

 @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 

您的相册迁移或您的相册模型是否引用了user_id或与用户的关系?

如果不是,即使您分配了数据库,数据库也不会保存该信息。