Ruby on rails 如何检查ruby变量中只有一个对象?
我有一个ruby变量@object,里面只能有一个对象或多个对象。Ruby on rails 如何检查ruby变量中只有一个对象?,ruby-on-rails,Ruby On Rails,我有一个ruby变量@object,里面只能有一个对象或多个对象。 如何在Rails中检查。 已尝试使用 .length .size .count 您可以使用respond\u to?方法 @object.respond_to? :size 如果对象数组可以使用respond\u to?方法,则返回true @object.respond_to? :size 如果对象数组Michael的答案应该已经起作用,则返回true,但另一个选项是检查它是否包括可枚举模块(应该支持所有“数组”-is
如何在Rails中检查。 已尝试使用
.length
.size
.count
您可以使用
respond\u to?
方法
@object.respond_to? :size
如果对象数组可以使用
respond\u to?
方法,则返回true
@object.respond_to? :size
如果对象数组Michael的答案应该已经起作用,则返回true,但另一个选项是检查它是否包括
可枚举
模块(应该支持所有“数组”-ish对象,除非它们有自己的自定义实现):
例子
Michael的答案应该已经起作用了,但另一个选项是检查它是否包括
可枚举
模块(应该支持所有“Array”-ish对象,除非它们有自己的自定义实现):
例子
你的
@object
变量的类型是什么?它可以有一个类、一个变量或数组的任何一个或多个对象是rails 3还是rails 4?ruby 2.2.1、rails 4.2.1你的@object
变量的类型是什么?它可以有一个类、一个变量或数组的任何一个或多个对象是rails 3还是rails 4?ruby 2.2.1,rails 4.2.1任何东西都会响应.size
。例如,字符串.yep、count
会更好。字符串也会对此做出响应。许多东西都会响应.size
。字符串,例如.yesp、count
更好字符串也会响应它。当您知道变量类型为哈希或数组时,就是这种情况。但是如果变量有一个对象会发生什么呢?你说的“变量有一个对象”是什么意思?你能举个例子吗?ruby中的一切都是对象。您是指“variable have allows\u to/has\u many associations”还是指“variable have instance\u variable objects”?如果您不是在谈论模型关系(比如belish\u to/has\u many),那么您是指“variable have instance\u variable objects”?当您知道变量类型是哈希还是数组时,情况就是这样。但是如果变量有一个对象会发生什么呢?你说的“变量有一个对象”是什么意思?你能举个例子吗?ruby中的一切都是对象。您是指“变量属于/拥有多个关联”吗?或者如果您不是指模型关系(如属于/拥有多个),那么您是指“变量拥有实例变量对象”吗?
# Array
[].is_a? Enumerable
# => true
# Hash
{}.is_a? Enumerable
# => true
# Set
[].to_set.is_a? Enumerable
# => true
# Subclass of any of the above
class MyArr < Array
end
MyArr.new.is_a? Enumerable
# => true
# ActiveRecord::Relation
User.all.is_a? Enumerable
# => true
# String
'somestring'.is_a? Enumerable
# => false
# Integer/Float
123.is_a? Enumerable
# => false
(123.45).is_a? Enumerable
# => false
# Time
Time.now.is_a? Enumerable
# => false
## Rails 4:
ActionController::Parameters.new.is_a? Enumerable
# => true
## Rails 5:
ActionController::Parameters.new.is_a? Enumerable
# => false
# in Rails 5, ActionController::Parameters no longer inherits from Hash
# ActionController::Parameters is the type of the variable `params` in your controllers
# Because practically speaking you can loop over it, so it should still be an "Array"
# Therefore, you might want to use the following instead of `.is_a? Enumerable`
@object.respond_to? :each
# => returns true if Array-ish or false
ActionController::Parameters.new.respond_to? :each
# => true