【发布时间】:2013-07-14 10:16:51
【问题描述】:
我正在做一个迁移项目。想要将 rails 2.x 应用程序迁移到 3.x。我的活动记录有问题。
在 Rails 2.x 中:
arr=StorageUnit.find(:all, :conditions =>"type='Drawer'")
上面的代码会得到所有类型为 Drawer 的记录。
arr.class
=> Array
在 Rails 3.x 中:
这里不推荐使用上述功能。所以我不得不使用
arr=StorageUnit.where("type='Drawer'")
上面的代码会得到所有类型为 Drawer 的记录。
arr.class
ActiveRecord::Relation
我猜这是因为 Active Record 发生了变化。 我的问题是我有一些基于此类的代码。
例如:
if arr.class== Array
do something
else
do something
end
所以现在我把它改成了
if arr.class== ActiveRecord::Relation
do something
else
do something
end
只是想知道是否有更好的解决方案或任何替代方法来解决它。我有很多地方他们用过这种东西。
编辑:
arr=StorageUnit.where("type='Drawer'").all
将类提供为数组。我的目标是知道什么时候没有后缀的代码可以提供你需要的记录,而不是全部到底有什么用。?只是为了换班吗?谁能解释一下?
【问题讨论】:
-
显式检查事物的类别并不是非常地道的红宝石
-
@FrederickCheung 是正确的。如果需要绝对查类,可以使用
arr.is_a?(Array)
标签: ruby ruby-on-rails-3 activerecord