2014-02-26 59 views
1

直到現在我想,我只允許那些我需要保存在數據庫中的屬性。但最近我用Jcrop裁剪我的頭像,它具有將從前端作物後發送4個虛擬屬性,我們是否也需要允許ruby虛擬屬性?

這裏是我的模型

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 

當我農作物提交後,我的控制檯日誌說

unpermitted params: crop_x, crop_y, crop_h, crop_w 

並且圖像沒有被裁剪。

但如果我可以把這些虛擬的屬性

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

然後圖像被成功地裁剪。

所以問題是爲什麼我需要允許這些虛擬屬性,即使這不是保存在數據庫中?

回答

0

Rails guide

憑藉強大的參數,動作控制器參數被禁止 在活動模型質量分配使用,直到他們已經 列入白名單。

因此,這裏沒有區分正常屬性和虛擬屬性,它只是允許參數進行質量分配。你的模型用這些參數做什麼取決於你。