ruby 手动更新Carrierwave Uploader装载的属性

ve7v8dk2  于 2023-08-04  发布在  Ruby
关注(0)|答案(2)|浏览(92)

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

  • 谢谢-谢谢

**更新:**相关编码:

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方法会冻结字符串还是使其不可变?

9vw9lbht

9vw9lbht1#

我找到了解决办法。
我的问题是,我不能改变属性挂载我的载波上传从我的种子。rb文件。
这个方法的作用是:

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

字符串

e5nqia27

e5nqia272#

上面的答案使它不可能检索到的信息,除非使用pluck(:avatar),所以我不会去与它
您必须在Uploader类上设置变量,而不是在数据库上手动设置
编辑
从该解决方案中检索值的另一种方法是

user = User.last 
avatar_value = user[:avatar]

字符串

相关问题