我有许多 Rails 模型,每个模型都是has_one :myobj
. 我希望能够在运行时确定每个关联的外键是什么。这可能吗?
我不想重复这个问题。我想要从特定模型的角度来看的外键,而不是给定模式的默认外键。
我有许多 Rails 模型,每个模型都是has_one :myobj
. 我希望能够在运行时确定每个关联的外键是什么。这可能吗?
我不想重复这个问题。我想要从特定模型的角度来看的外键,而不是给定模式的默认外键。
您可能正在寻找方法reflect_on_association。
在一个看起来像这样的模型上:
class Foo < ActiveRecord::Base
has_one :myobj, foreign_key:'myobj_id', class_name:'Bar'
end
运行该方法给了我这个:
1.9.3-p194 :001 > pp Foo.reflect_on_association(:myobj)
#<ActiveRecord::Reflection::AssociationReflection:0x96669f4
@active_record=
Foo(id: integer, name: string, created_at: datetime, updated_at: datetime),
@collection=false,
@macro=:has_one,
@name=:myobj,
@options={:foreign_key=>"myobj_id", :class_name=>"Bar"},
@plural_name="myobjs">