【问题标题】:(auto-generated?) _ids gives ActiveRecord::UnknownPrimaryKey error(自动生成?)_ids 给出 ActiveRecord::UnknownPrimaryKey 错误
【发布时间】:2012-09-26 16:06:35
【问题描述】:

假设我有模型

class Widget < ActiveRecord::Base
    has_many :widget_spots 

class WidgetSpot < ActiveRecord::Base
  belongs_to :widget

另外,在我的 MySQL 表“widget_spots”中,我有一列“widget_id”

+--------------------+------------+------+-----+---------+-------+
| Field              | Type       | Null | Key | Default | Extra |
+--------------------+------------+------+-----+---------+-------+
| id                 | int(11)    | NO   | PRI | NULL    |       |
| widget_id          | int(11)    | NO   | PRI | NULL    |       |
                ................
+--------------------+------------+------+-----+---------+-------+

现在,如果在我的 rails 控制台中,尝试访问 widget_spot_ids 会出错。

> widget = widgets.find(:first)
> widget.widget_spot_ids
ActiveRecord::UnknownPrimaryKey: ActiveRecord::UnknownPrimaryKey
    from /Users/xxxxx/.rvm/gems/ruby-1.9.2-p320@rails-3.1.1/gems/activerecord-3.1.1/lib/active_record/reflection.rb:374:in `primary_key'
    from /Users/xxxxx/.rvm/gems/ruby-1.9.2-p320@rails-3.1.1/gems/activerecord-3.1.1/lib/active_record/reflection.rb:228:in `association_primary_key'
    from /Users/xxxxx/.rvm/gems/ruby-1.9.2-p320@rails-3.1.1/gems/activerecord-3.1.1/lib/active_record/associations/collection_association.rb:51:in `ids_reader'
    from /Users/xxxxx/.rvm/gems/ruby-1.9.2-p320@rails-3.1.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/collection_association.rb:62:in `block in define_readers'
    from (irb):12
    from /Users/xxxxx/.rvm/gems/ruby-1.9.2-p320@rails-3.1.1/gems/railties-3.1.1/lib/rails/commands/console.rb:45:in `start'
    from /Users/xxxxx/.rvm/gems/ruby-1.9.2-p320@rails-3.1.1/gems/railties-3.1.1/lib/rails/commands/console.rb:8:in `start'
    from /Users/xxxxx/.rvm/gems/ruby-1.9.2-p320@rails-3.1.1/gems/railties-3.1.1/lib/rails/commands.rb:40:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

但是,获取实例会给出一个没有错误的列表:&gt; widget.widget_spots 执行预期的 SQL 查询并给出一个列表。

如何确定ActiveRecord::UnknownPrimaryKey 错误是在哪里以及如何生成的。它试图在哪个数据库中查找哪个主键?

【问题讨论】:

    标签: mysql ruby-on-rails ruby activerecord ruby-on-rails-3.1


    【解决方案1】:

    这可能是因为目标widget_spots 表的主键由多个字段组成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 2016-12-27
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      相关资源
      最近更新 更多