2012-02-12 54 views
0

我已經在user.rb定義了很多關係,就像找到所有的:在模型

has_many :posts, :dependent => :destroy 
has_many :comments, :dependent => :destroy 
... and others 

我如何以編程方式找到所有這些關係的模型用戶自定義的has_many關係?那就是我希望能夠通過Rails找到Post,Comment等所有子模型,而不必手動查看user.rb文件。

我該怎麼做?

+0

出於好奇,你試圖解決的底層問題是什麼?你在問一個完全有效的問題,但我想知道用例是什麼... – 2012-02-12 04:54:41

+0

@MarcTalbot:當然。我想能夠刪除所有的孩子,但不是父母本身。如果我做一個user.destroy,一旦所有的孩子被刪除,父母也會被刪除。我不想刪除父母 - 我可能會用status = inactive或其他東西戳記用戶記錄本身。說得通? – bachposer 2012-02-13 02:51:21

回答

4

你想要做的就是所謂的「反射」 - 這樣你的軟件就可以在運行時快速找到更多關於它自己的信息。

在Rails中,ActiveRecord支持這一點。請參閱Reflection方法。

新增%的文檔,你會打電話

associations = User.reflect_on_all_associations(:has_many) 

你會回來,會給你你所有的User類的has_many關聯的信息對象的數組。