Ruby on rails 如何检查ruby变量中只有一个对象?

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

我有一个ruby变量@object,里面只能有一个对象或多个对象。
如何在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