2013-07-26 98 views
0

我在SO上搜索了一個這樣的答案,並且沒有找到答案。我得到這個錯誤:無法大規模指派保護的屬性:品牌,細節,產品,代號Mass Assignment Issue Rails 3

我從一個文件上傳CSV數據到我的軌道分貝。下面是從上傳頁面控制器導入操作:

def import 
    Item.import(params[:file]) 
    redirect_to root_url, notice: "Products imported." 
end 

從項目模型attr_accessible行:

attr_accessible :brand, :details, :img, :product, :code 

我使用的設計,不知道這是問題的一部分?我需要在我的用戶模型中做些什麼才能做到這一點?提前致謝。

下面是從項目的self.import方法:

def self.import(file) 
CSV.foreach(file.path, headers: true) do |row| 
    Item.create! row.to_hash 
    end 
    end 
+0

'Item#import'方法在這裏很重要。你可以請張貼它的來源嗎? – tessi

+1

BTW:你可能要考慮的[參數強寶石(https://github.com/rails/strong_parameters) – tessi

+0

發佈的導入方法,並感謝有關強參數的提示。它工作到目前爲止。 – settheline

回答

1

這是一般的調試尖端—你也可以爲了好奇來看看什麼params在這一點上,或者使用pry

def import 
    raise StandardError, params.inspect 
end 

我還建議您使用Strong Parameters,並在我的博客上詳細介紹了一種乾淨的方法,您可能會發現它很有用:Bootstrapping Strong Parameters in Rails

+0

好的提示關於發現什麼是參數。我使用強參數計算出了質量分配問題,但是現在我在試圖上傳時收到此消息....'缺少必需的參數:項目。'我假設這意味着我的表中有一些參數與我的csv列標題不匹配。我的懷疑是我的表有時間戳,根本沒有在csv文件中引用。我似乎無法得到一個StandardError來顯示參數。 – settheline

+0

忽略我最後的評論,認爲我已經整理出來了。 – settheline