Rails 5.0 到 5.1 - 一对多关联上的“Cant cast Hash”
Posted
技术标签:
【中文标题】Rails 5.0 到 5.1 - 一对多关联上的“Cant cast Hash”【英文标题】:Rails 5.0 to 5.1 - 'Cant cast Hash' on one-to-many association 【发布时间】:2017-07-28 23:12:43 【问题描述】:我正在将我的应用程序从 rails 5.0 迁移到 5.1,并且在访问关联模型时收到错误“Cant cast Hash”(在 5.0 中一切正常)。
sighting.rb:
belongs_to :species, :class_name => 'Species', :foreign_key => 'species_id'
belongs_to :site, :class_name => 'Site', :foreign_key => 'site_id'
belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id'
belongs_to :spotter, :class_name => 'User', :foreign_key => 'spotter_id'
species.rb:
has_many :sightings, :class_name => 'Sighting', :foreign_key => 'species_id', :dependent => :restrict_with_exception
site.rb:
has_many :sightings, :class_name => 'Sighting', :foreign_key => 'site_id', :dependent => :restrict_with_exception
在控制台(已播种数据库):
Sighting.find(1).site
返回正确的站点模型。
Sighting.find(1).species
另一方面返回错误
TypeError: can't cast Hash
两个关联模型(以及用户模型 - 未显示)都以相同的方式设置。正如我所说,如果我恢复到 rails 5.0,一切都会再次正常运行。
【问题讨论】:
【参考方案1】:这很像https://github.com/rails/rails/issues/29299中描述的问题
已修复已合并到5-1-stable
分支
https://github.com/rails/rails/pull/29058
您可以等待v5.1.4
或者您可以在 Gemfile 中加载该分支
gem 'rails', github: 'rails/rails', branch: '5-1-stable'
【讨论】:
以上是关于Rails 5.0 到 5.1 - 一对多关联上的“Cant cast Hash”的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails,一对多关联(One-to-Many)