gpt4 book ai didi

ruby - DataMapper 无法将字符串转换为整数枚举

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:19 28 4
gpt4 key购买 nike

我有以下模型

class TagType
include DataMapper::Resource

## Relationships
belongs_to :category
has n, :tags

## Properties
property :uuid, UUID, :key => true, :default => lambda { |r,p| SecureRandom.uuid }
property :name, Enum[:venue, :format, :genre, :organization]
end

在我的应用程序 Controller 中,我收到一个字符串形式的名称参数,将其转换为一个符号,然后尝试执行查找:

get ':cat_name/:tag_type' do
cat = Category.first :name => params[:cat_name]
halt 400, "Invalid category" if cat.nil?
sym = params[:tag_type].to_sym
puts "Sym: #{ sym.inspect }"
raise "Not symbol!" if sym.class != Symbol
tag_type = TagType.first(:category => cat, :name => sym)
halt 400, "Invalid tag type name" if tag_type.nil?

这是给了我

4) Error: test_0001_should_get_all_the_tags_for_a_category(TagController): TypeError: can't convert String into Integer test/app/controllers/tag_controller_test.rb:10:in []'
test/app/controllers/tag_controller_test.rb:10:in
block (2 levels) in '

puts "Sym: #{ sym.inspect }" 的输出是 Sym: :venue我试过只用文字 :genre 代替 sym 以确保工作正常,而且确实如此。如果它不是符号,我会尝试引发异常,但这不会触发,并且每次都会抛出此错误,尽管它显然是一个符号。

这是使用 DataMapper 扩展 dm-types,更具体地说是 Enum class

最佳答案

如果您查看我的异常,您会发现我遗漏了一个重要的细节:

) Error: test_0001_should_get_all_the_tags_for_a_category(TagController): TypeError: can't convert String into Integer test/app/controllers/tag_controller_test.rb:10:in []' test/app/controllers/tag_controller_test.rb:10:inblock (2 levels) in

这是我测试的第 10 行,恰好与应用程序 Controller 本身中的行匹配! DataMapper 工作正常。我的错。

关于ruby - DataMapper 无法将字符串转换为整数枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16194726/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com