2013-10-25 30 views
3

找到父對象的一個​​例子模式是「書belongs_to的圖書館」動態地從belongs_to的

r = Book.reflect_on_all_associations(:belongs_to).first 

以上認爲前反射。然後我可以做「r.name」來獲得「圖書館」(當然,假設沒有其他belongs_to)。

所以我的問題是......如果我想動態訪問「庫」類,我該怎麼做?

我不想手動使用「Library.all」(etc),因爲我試圖使它成爲一個通用的東西。

我最初的嘗試是這樣的:

r.name.singularize.classify.constantize 

,但似乎尷尬....有沒有更合適的方法是什麼?

回答

0

試試這個:

r.class.name.constantize 
+0

嗯,好。不過,我是否正確地做對了? reflect_on_all_associations看起來很酷但很低級別?如果你想成爲通用的而不是通過他們的名字來引用父模型,這是唯一的方法嗎? – Dolbery

+0

我這麼認爲,是的。我就是這麼做的。 – depa

1

我只是在我的控制檯試過這樣:

k = Post.reflect_on_all_associations(:belongs_to).first.active_record 
# => User 
k.first 
# => returns the first user