手动更新Carrierwave Uploader安装的属性

时间:2013-09-23 00:06:55

标签: ruby ruby-on-rails-3 activerecord carrierwave rails-activerecord

我无法在由carrierwave上传器安装的属性上使用model.update_attribute。 SQL语句不接受该值并向占位符添加NULL。如果我从模型类中删除mount_uploader语句,它将正常工作。我正在从控制台进行故障排除,并试图在播种数据库时添加一些属性,这阻碍了我的努力。想法?

感谢。

更新 相关代码:

class Profile < ActiveRecord::Base
  belongs_to :user
  has_and_belongs_to_many :sports
  has_and_belongs_to_many :interests
  has_and_belongs_to_many :minors
  has_and_belongs_to_many :majors
  has_and_belongs_to_many :events
  has_and_belongs_to_many :groups
  attr_accessible :description, :username, :avatar, :bio, :first_name, :last_name, :major, :minor, :graduation_date, :living_situation, :phone, :major_ids, :minor_ids, :sport_ids
  mount_uploader :avatar, AvatarUploader
end

我只是尝试从db种子文件重写:avatar字符串,同时从rails控制台进行测试,如下所示: Profile.first.update_attribute(:avatar,'foo')

当我注释掉mount_uploader行时,两者都有效。

添加mount_uploader方法是否会冻结字符串或使其不可变?

1 个答案:

答案 0 :(得分:9)

我找到了解决方法。

我的问题是我无法改变从seed.rb文件中载入CarrierWave上传器的属性。

这有效:

user.profile.update_column(:avatar, 'foobar/image.png')