簡體   English   中英

(自動生成?)_ids提供ActiveRecord :: UnknownPrimaryKey錯誤

[英](auto-generated?) _ids gives ActiveRecord::UnknownPrimaryKey error

假設我有模型

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>'

但是,獲取實例會給出一個沒有錯誤的列表: > widget.widget_spots執行預期的SQL查詢並給出一個列表。

如何確定在哪里以及如何生成ActiveRecord::UnknownPrimaryKey錯誤。 它試圖在哪個數據庫中找到哪個主鍵?

這可能是因為目標widget_spots表的主鍵由多個字段組成。

暫無
暫無

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

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