簡體   English   中英

Active Record對象中發現意外的屬性

[英]unexpected attributes found in Active Record object

我在ActiveRecord對象中發現了意外的屬性,但無法弄清楚它的來源。 注意最終屬性nil => nil

irb(main):001:0> p = ProgExit.new
=> #<ProgExit id: nil, Student_Bnum: nil, Program_ProgCode: nil, ExitCode_ExitCode: nil, ExitTerm: nil, ExitDate: nil, GPA: nil, GPA_last60: nil, RecommendDate: nil, Details: nil>
irb(main):002:0> p.attributes
=> {"id"=>nil, "Student_Bnum"=>nil, "Program_ProgCode"=>nil, "ExitCode_ExitCode"=>nil, "ExitTerm"=>nil, "ExitDate"=>nil, "GPA"=>nil, "GPA_last60"=>nil, "RecommendDate"=>nil, "Details"=>nil, nil=>nil}

需要注意的其他兩個事項:1)此問題在其他任何型號上均不存在。 2)在開發,測試和生產中,此問題對於該模型都是相同的。 3)該模型不在任何地方使用attr_accessor。

知道這來自哪里嗎? 我包括相關的模型,盡管到目前為止它很小(仍在工作)。

class ProgExit < ActiveRecord::Base

    belongs_to :student, foreign_key: "Student_Bnum"
    belongs_to :program, foreign_key: "Program_ProgCode"
    belongs_to :exit_code, foreign_key: "ExitCode_ExitCode"
end

這是我的schema.rb中的相關代碼

  create_table "prog_exits", id: false, force: true do |t|
    t.integer  "id",                           null: false
    t.string   "Student_Bnum",      limit: 9,  null: false
    t.string   "Program_ProgCode",  limit: 45, null: false
    t.string   "ExitCode_ExitCode", limit: 45, null: false
    t.integer  "ExitTerm",                     null: false
    t.datetime "ExitDate"
    t.float    "GPA",               limit: 24
    t.float    "GPA_last60",        limit: 24
    t.datetime "RecommendDate"
    t.text     "Details"
  end

  add_index "prog_exits", ["ExitCode_ExitCode"], name: "fk_Exit_ExitCode1_idx", using: :btree
  add_index "prog_exits", ["Program_ProgCode"], name: "fk_Exit__Program_idx", using: :btree
  add_index "prog_exits", ["Student_Bnum"], name: "fk_Exit_Student1_idx", using: :btree
  add_index "prog_exits", ["id"], name: "id", using: :btree

我不確定這里要包含什么其他代碼,但是如果還有其他可能是罪魁禍首,我可以分享給他人。

由於您已經覆蓋了該表的默認主鍵(通過在create_table語句中包括id: false選項),因此需要為該模型顯式定義一個主鍵。

根據Rails的文檔 ,您可以在模型上使用self.primary_key=明確定義密鑰。

請參閱相關問題: 沒有主鍵的ActiveRecord模型

暫無
暫無

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

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