Ruby on rails 我们还需要允许ruby虚拟属性吗?

Ruby on rails 我们还需要允许ruby虚拟属性吗?,ruby-on-rails,ruby-on-rails-4,jcrop,strong-parameters,Ruby On Rails,Ruby On Rails 4,Jcrop,Strong Parameters,到目前为止,我认为,我必须只允许那些我需要保存在数据库中的属性。但最近我用Jcrop裁剪了我的用户头像,它有4个虚拟属性,裁剪后会从前端发送 这是我的模型 class User < ActiveRecord::Base mount_uploader :avatar, AvatarUploader attr_accessor :crop_x, :crop_y, :crop_w, :crop_h after_update :crop_avatar def crop_avat

到目前为止,我认为,我必须只允许那些我需要保存在数据库中的属性。但最近我用Jcrop裁剪了我的用户头像,它有4个虚拟属性,裁剪后会从前端发送

这是我的模型

class User < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader
  attr_accessor :crop_x, :crop_y, :crop_w, :crop_h

  after_update :crop_avatar

  def crop_avatar
    avatar.recreate_versions! if crop_x.present?
  end
end
并且图像不会被裁剪

但如果我允许这些虚拟属性作为

params.require(:user).permit(:avatar,:crop_x,:crop_y,:crop_h,:crop_w)
然后图像被成功裁剪

所以问题是,为什么我需要允许这些虚拟属性,即使这些属性没有保存在数据库中?

来自:

对于强参数,禁止使用动作控制器参数 在激活的模型质量指定中使用,直到 白名单

所以在这里,普通属性和虚拟属性之间没有区别,只是允许质量分配的参数。您的模型如何处理这些参数取决于您

params.require(:user).permit(:avatar,:crop_x,:crop_y,:crop_h,:crop_w)