- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在运行使用具有模型之间关联的固定装置的测试时遇到问题。
这是我一运行 rake test
就得到的错误:
ERROR["test_truth", SevenPortfolioTest, 0.005154775]
test_truth#SevenPortfolioTest (0.01s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_destroy_item_video", SevenPortfolio::ItemVideosControllerTest, 0.008887804]
test_should_destroy_item_video#SevenPortfolio::ItemVideosControllerTest (0.01s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_get_index", SevenPortfolio::ItemVideosControllerTest, 0.011364416]
test_should_get_index#SevenPortfolio::ItemVideosControllerTest (0.01s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_create_item_video", SevenPortfolio::ItemVideosControllerTest, 0.014584266]
test_should_create_item_video#SevenPortfolio::ItemVideosControllerTest (0.01s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_get_new", SevenPortfolio::ItemVideosControllerTest, 0.017282812]
test_should_get_new#SevenPortfolio::ItemVideosControllerTest (0.02s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_update_item_video", SevenPortfolio::ItemVideosControllerTest, 0.019729858]
test_should_update_item_video#SevenPortfolio::ItemVideosControllerTest (0.02s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_get_edit", SevenPortfolio::ItemVideosControllerTest, 0.022365633]
test_should_get_edit#SevenPortfolio::ItemVideosControllerTest (0.02s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_destroy_item", SevenPortfolio::ItemsControllerTest, 0.025860205]
test_should_destroy_item#SevenPortfolio::ItemsControllerTest (0.03s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_get_edit", SevenPortfolio::ItemsControllerTest, 0.030867796]
test_should_get_edit#SevenPortfolio::ItemsControllerTest (0.03s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_show_item", SevenPortfolio::ItemsControllerTest, 0.036687105]
test_should_show_item#SevenPortfolio::ItemsControllerTest (0.04s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_update_item", SevenPortfolio::ItemsControllerTest, 0.040130774]
test_should_update_item#SevenPortfolio::ItemsControllerTest (0.04s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_create_item_with_video", SevenPortfolio::ItemsControllerTest, 0.042776553]
test_should_create_item_with_video#SevenPortfolio::ItemsControllerTest (0.04s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_get_index", SevenPortfolio::ItemsControllerTest, 0.045301694]
test_should_get_index#SevenPortfolio::ItemsControllerTest (0.05s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_get_new", SevenPortfolio::ItemsControllerTest, 0.048094189]
test_should_get_new#SevenPortfolio::ItemsControllerTest (0.05s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
ERROR["test_should_create_item_with_gallery", SevenPortfolio::ItemsControllerTest, 0.051019403]
test_should_create_item_with_gallery#SevenPortfolio::ItemsControllerTest (0.05s)
NoMethodError: NoMethodError: undefined method `type' for nil:NilClass
我正在测试 Rails 引擎。这是我的装置:
# test/fixtures/seven_portfolio/items.yml
item_one:
description: item one description
finished_at: <%= 7.days.ago %>
is_featured: true
item_type: 0
item_two:
description: item two description
finished_at: <%= 6.days.ago %>
is_featured: false
item_type: 1
# test/fixtures/seven_gallery/galleries.yml
gallery_one:
title: seven_gallery_gallery_one_title
item: item_one
# test/fixtures/seven_gallery/photos.yml
photo_one:
caption: photo_one_caption
gallery: gallery_one
# test/fixtures/seven_portfolio/item_videos.yml
one:
item: item_one
例如,当我删除 item: item_one
和类似的关联行时。测试效果很好。
--编辑
这是回溯
Command failed with status (1): [ruby -I"lib:lib:test" "/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/rake_test_loader.rb" "test/**/*_test.rb" ]
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/testtask.rb:108:in `block (3 levels) in define'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/file_utils.rb:57:in `call'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/file_utils.rb:57:in `sh'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/file_utils_ext.rb:37:in `sh'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/file_utils.rb:96:in `ruby'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/file_utils_ext.rb:37:in `ruby'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/testtask.rb:104:in `block (2 levels) in define'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/file_utils_ext.rb:58:in `verbose'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/testtask.rb:100:in `block in define'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/task.rb:240:in `call'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/task.rb:240:in `block in execute'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/task.rb:235:in `each'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/task.rb:235:in `execute'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/task.rb:179:in `block in invoke_with_call_chain'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/task.rb:172:in `invoke_with_call_chain'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/task.rb:165:in `invoke'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:150:in `invoke_task'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:106:in `block (2 levels) in top_level'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:106:in `each'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:106:in `block in top_level'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:115:in `run_with_threads'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:100:in `top_level'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:78:in `block in run'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rake/application.rb:75:in `run'
/home/rafael/.rbenv/versions/2.2.0/bin/rake:33:in `<main>'
编辑
这是 Item
类:
module SevenPortfolio
class Item < ActiveRecord::Base
has_one :item_video, class_name:'SevenPortfolio::ItemVideo', foreign_key: "seven_portfolio_item_id"
has_one :item_gallery, class_name: 'SevenGallery::Gallery', foreign_key: "seven_portfolio_item_id"
accepts_nested_attributes_for :item_video, :item_gallery
before_save :process_type
def process_type
self.build_item_video if self.item_type == 0
self.build_item_gallery if self.item_type == 1
end
def type_content
self.item_gallery if self.item_type == 0
self.item_video if self.item_type == 1
end
end
end
和 Gallery
类:
class SevenGallery::Gallery < ActiveRecord::Base
include SevenGallery::Concerns::Gallery
belongs_to :item, :class_name => 'SevenPortfolio::Item'
end
编辑这是 schema.rb
文件:
ActiveRecord::Schema.define(version: 20150414145951) do
create_table "seven_gallery_galleries", force: :cascade do |t|
t.string "title", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "seven_portfolio_item_id", limit: 4
end
add_index "seven_gallery_galleries", ["seven_portfolio_item_id"], name: "index_seven_gallery_galleries_on_seven_portfolio_item_id", using: :btree
create_table "seven_gallery_photos", force: :cascade do |t|
t.string "caption", limit: 255
t.string "image", limit: 255
t.integer "seven_gallery_gallery_id", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "is_new", limit: 1, default: true
t.boolean "is_featured", limit: 1, default: false
t.text "description", limit: 65535
t.string "alt", limit: 255
t.integer "position", limit: 4, default: 0
end
add_index "seven_gallery_photos", ["seven_gallery_gallery_id"], name: "index_seven_gallery_photos_on_seven_gallery_gallery_id", using: :btree
create_table "seven_portfolio_item_videos", force: :cascade do |t|
t.string "url", limit: 255
t.text "description", limit: 65535
t.string "title", limit: 255
t.integer "seven_portfolio_item_id", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "seven_portfolio_item_videos", ["seven_portfolio_item_id"], name: "index_seven_portfolio_item_videos_on_seven_portfolio_item_id", using: :btree
create_table "seven_portfolio_items", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.text "description", limit: 65535
t.date "finished_at"
t.boolean "is_featured", limit: 1, default: false
t.integer "item_type", limit: 4, default: 0
end
add_foreign_key "seven_gallery_galleries", "seven_portfolio_items", on_delete: :cascade
add_foreign_key "seven_gallery_photos", "seven_gallery_galleries", on_delete: :cascade
add_foreign_key "seven_portfolio_item_videos", "seven_portfolio_items", on_delete: :cascade
end
最佳答案
在我的开发环境中迁移和回滚几次后,我遇到了同样的错误。这与“_type”列有关。
唯一为我修复它的是删除/创建测试数据库:
bundle exec rake db:reset RAILS_ENV=test
在执行此操作之前,请确信您的 schema.rb
状态良好。
关于ruby-on-rails - Rails - 测试 fixture 错误 NoMethodError : undefined method `type' for nil:NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29670023/
在检查对象是否为 nil 时,有人使用 1: if (object == nil) { //... } 有人用 2: if (nil == object) { //... } 1和2有
func InsertApData(w http.ResponseWriter, r *http.Request) { decoder := json.NewDecoder(r.Body)
为什么 nil.to_s 返回 "",而 nil.inspect 返回 "nil"(当显然 .inspect 使用 .to_s 方法) 最佳答案 "inspect" method of the Obj
运行时间 https://play.golang.org/p/sl12vfS9vP package main import "fmt" func main() { err := run()
我可以将三元条件运算符用于 if {} else {} 语句,如下所示:a ? x : y,还是问题?回答 1 : 回答 2。 是否可以使用这种格式来检查,而不是 a 是 true 还是 false,
无法弄清楚这里出了什么问题。按照设计设置说明,用谷歌搜索我能想到的一切,仍然没有运气。 undefined method `email' for # Extracted source (around
今天写一些 rspec 时,我遇到了一些意外的行为,将日期(和时间)实例与 nil 进行比较。这是一个使用原始 ruby 的示例(没有 Rails 或其他库): user@MacBook-Work
我将数据类型的非零值分配给非可选属性,然后将其分配给可选属性,最后用所述数据实例化图像。当可选项通过 if-let 子句时,它的 block 执行,抛出错误: Fatal error: Unexpec
swift 5.1 。 考虑以下。 let x: Any? = nil let y: Any = x print("x \(x)") // x nil pri
请耐心听我解释这一点, 我正在创建一个聊天室,用户可以在其中上传照片供其他人查看。当用户点击图标时,他们可以将照片上传到我的 Firebase 数据库(这已成功完成,我已经对此进行了测试)。照片的 U
我的 xCode 5.0 目前遇到一个奇怪的问题:一个对象在控制台中似乎为 nil,但同时它可以通过代码访问。 图 1:对象似乎为零 图2:NSLog(@"%@", imgDownloader) 的输
我有一个实现协议(protocol)的类,以便添加 3 个变量。我专门设置了图像变量,调试器显示该变量存在,但是在我打印它时在代码中显示为 nil,我的 if let 语句也认为该变量为 nil。 @
这个问题在这里已经有了答案: Swift 2 ( executeFetchRequest ) : error handling (5 个答案) 关闭 7 年前。 开始在 SWIFT 中学习编码,每次
两者 (not 'nil) 和 (not nil) 求值为T,那么'nil和nil有什么区别吗?那么 ''nil 呢?如果 ''nil 的计算结果为 'nil,那么 ''nil 是否也应该计算为 ni
(if '(nil nil) 'print-true 'print-false) (if '(nil) 'print-true 'print-false) 在上面的代码
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: obj.nil? vs. obj == nil 我发现了一个问题 - == nil 和 nil 哪个更好?
此代码段抛出异常: x = nil jsoned = x.to_json puts 'x.to_json=' + jsoned.inspect puts 'back=' + JSON.parse(js
基本上我有一个对象想要传递给前端。我在后端记录了它,它不是空的,但是在前端,当我提醒它时,它变成了空。 ... presentation := &presentationStruct { Obje
我创建了一个自定义错误类型来包装错误,以便在 Golang 中更轻松地进行调试。当有错误要打印时它可以工作,但现在它会引起 panic 。 Demo type Error struct { E
写一个符合我当前问题的标题有点难..我有一个 main() 函数,它使用另一个包 (database_sql) 中的函数。该函数初始化一个全局变量 sql.DB*。初始化后,变量不为nil,但是对于其
我是一名优秀的程序员,十分优秀!