簡體   English   中英

CSV導入中的ActiveRecord :: AssociationTypeMismatch

[英]ActiveRecord::AssociationTypeMismatch on CSV import

我正在導入CSV,其中包含兩個列nameboro

當我在開發中運行導入時,效果很好。 但是當我在Heroku上的生產環境中執行此操作時,出現此錯誤:

2013-02-13T07:53:43+00:00 app[web.1]: Started POST "/neighborhoods/import" for xx.xx0.xx.xx at 2013-02-13 07:53:43 +0000
2013-02-13T07:53:43+00:00 app[web.1]: 
2013-02-13T07:53:43+00:00 app[web.1]: ActiveRecord::AssociationTypeMismatch (Boro(#52915220) expected, got String(#18916260)):
2013-02-13T07:53:43+00:00 app[web.1]:   app/models/neighborhood.rb:20:in `block in import'
2013-02-13T07:53:43+00:00 app[web.1]:   app/models/neighborhood.rb:19:in `import'
2013-02-13T07:53:43+00:00 app[web.1]:   app/controllers/neighborhoods_controller.rb:85:in `import'
2013-02-13T07:53:43+00:00 app[web.1]: 
2013-02-13T07:53:43+00:00 app[web.1]: 

這是我的models/neighborhood ,或者錯誤中提到的行:

  def self.import(file)
    CSV.foreach(file.path, headers: true) do |row|
      neighborhood = where(name: row["name"]).first_or_create!(row.to_hash.slice(*accessible_attributes))
      boro = Boro.find_by_name(row["boro"])
      neighborhood.boro = boro      
      neighborhood.save!
    end
  end  

這是我的controllers/neighborhood#import

def import
  Neighborhood.import(params[:file])
  redirect_to imports_index_url, notice: "Neighborhoods imported."
end

這是兩個模型之間的關聯:

Neighborhood belongs_to :boro Boro has_many :neighborhoods

這是鄰居的模式:

# Table name: neighborhoods
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  created_at :datetime         not null
#  updated_at :datetime         not null
#  boro_id    :integer

這是Boro的架構:

# Table name: boros
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  created_at :datetime         not null
#  updated_at :datetime         not null

有什么想法嗎?

因此,看來我遇到的問題與在可訪問屬性中同時包含:boro, :boro_id以及我更新該屬性的方式有關。

一旦我在attr_accessible列表中擺脫了:boro

attr_accessible :name, :listing_ids, :boro_id

一旦我更改了它,並且沒有嘗試使用update_attributes (我也在做),那么上面的代碼就可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM