[英]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.