2015-12-30 19 views
1

我有一個DI例程,其中我有一個大的csv,我以已知的列格式導入。我第一次設立了列映射:您正試圖在Rails 3.2.5中創建一個屬性。

col_map = 
    { 
     4 => :name, 
     6 => :description, 
     21 => :in_stock, 
     ... 

然後我讀每一行,然後使用列映射,試圖設置屬性:

i = Item.new 
col_map.each do |k,v| 
    i[v] = chunks[k] #chunks is the line read in split by the delimiter 

在我的項目申報,我聲明兩個屬性,b/C,這些未存儲在數據庫中,他們用於其它邏輯:

attr_writer :in_stock 
attr_writer :end_date 

當代碼獲取到這一行:

i[v] = chunks[k] 

我得到這個消息:

但我不會試圖創建一個屬性,我使用attr_writer。我懷疑這與我使用的[]有關,而不是。爲左翼。

任何人都可以看到我做錯了什麼?

感謝您的幫助, 凱文

回答

1

誠然,棄用措辭稍顯混亂,但你會看到這個警告,因爲model[attribute_name] = ...風格僅支持ActiveRecord的型號,沒有非持續屬性屬性加上attr_writer

您可以看到產生警告over here的代碼。

爲了解決這個問題,我會使用send這將適用於所有屬性,例如

i.send("#{v}=", chunks[k]) 
+1

真棒謝謝你,這正是我所尋找的知識的差距。 – user1130176