如何在创建ActiveRecord对象时设置属性?

时间:2009-04-15 19:42:28

标签: ruby-on-rails 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字段的赋值。有什么想法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

如果没有,即使您指定了数据库,数据库也不会保存该信息。