有没有区分关联记录的方法?

时间:2014-10-30 10:45:26

标签: ruby-on-rails class activerecord ruby-on-rails-4 comparison

我正在寻找一种方法,使用Rails来区分关联的一条记录(例如:@user)(例如:@users)。

这是我正在尝试做的事情:

def my_method(var)
  if var == #record
    # do something
  elsif var == #association
    #do something else
  end
end

var可以是任何记录或关联,例如@ user,@ users,@ page,@ pages,...

我试图用.class或.each方法解决这个问题但没有成功......

1 个答案:

答案 0 :(得分:1)

记录通常是ActiveRecord base的实例,关联通常是可枚举的集合。

您可以明确检查类型

def my_method(var)
  if var.is_a? ActiveRecord::Base
    # single instance
  else
    # collection, association
  end
end

或依赖Ruby duck-tying。

def my_method(var)
  if var.respond_to? :each
    # collection, association
  else
    # single instance
  end
end

鸭子打字通常是首选方法。