Rails [已解决] ActiveRecord::AssociationTypeMismatch --- rails_admin

feipinghuang · 2012年09月27日 · 最后由 liulupeng 回复于 2017年04月03日 · 4643 次阅读

环境:

ruby 1.9.3 rails 3.2.8 rails_admin 0.0.5

关系:

class Question < ActiveRecord::Base has_many :comments end

class Comment < ActiveRecord::Base belongs_to :question end

rails_admin中更新有CommentQuestion时出现以下错误:

ActiveRecord::AssociationTypeMismatch (Comment(#70171889588300) expected, got NilClass(#70171855412360))


罪魁祸首 (重写 model 的 id 方法):

def id self[:id].to_s end

ActiveRecord 中:

module ActiveRecord module Associations ...... def ids_writer(ids) pk_column = reflection.primary_key_column ids = Array.wrap(ids).reject { |id| id.blank? } ids.map! { |i| pk_column.type_cast(i) } replace(klass.find(ids).index_by { |r| r.id }.values_at(*ids)) end ...... end end


千万不要偷懒直接重写 model 的 id 方法

你好,我遇到同样的问题 class Manufacturer < ActiveRecord::Base has_many :products class Product < ActiveRecord::Base belongs_to :manufacturer

但我不知道到底该怎么改? 我在 product 的 table 中有一个 column 是 manufacturer_id,类别是 integer

如果你在的话,能帮忙释疑下吗?谢谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号