2012-01-12 65 views

回答

2

如果有疑问,请启动控制台会话并检查出来。

实施例假定一个ActiveRecord对象 “状态” 属于一个ActiveRecord对象 “国家”:

$> rails console 

$> s = State.new 
=> #<State id: nil, code: nil, name: nil, country_id: nil, created_at: nil, updated_at: nil> 

$> s.class.reflect_on_association(:country).klass.new 
=> #<Country id: nil, name: nil, code: nil, created_at: nil, updated_at: nil> 

所以可以说,它是一个滑轨(ActiveRecord的)类。

+0

措辞(克拉斯)看起来很奇怪。我在哪里可以找到api.rubyonrails.com上的详细信息?谢谢。 – user938363 2012-01-13 01:39:00

+0

在该示例中,Country.new创建完全相同的结果。使用这个冗长而复杂的结构来做一件容易的事情有什么好处? – user938363 2012-01-13 01:54:24

+1

据我所知,这里使用klass是为ActiveRecord :: Reflection :: AssociationReflection对象访问klass变量 - 如果您要使用单词'class',它将返回类的类型(ActiveRecord :: Reflection: :AssociationReflection) - 但作者想要包含该对象的类 - 在我们的示例中为Country。由于“类”一词是为创建类而保留的,所以“klass”一词用于引用正在反映的类。 – miked 2012-01-15 01:50:30