Ruby on rails 我们还需要允许ruby虚拟属性吗?
到目前为止,我认为,我必须只允许那些我需要保存在数据库中的属性。但最近我用Jcrop裁剪了我的用户头像,它有4个虚拟属性,裁剪后会从前端发送 这是我的模型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
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)