2012-07-18 49 views
0

我有一個標籤項目列表,我想列出每個項目旁邊的標籤名稱。例如:在Rails中通過外鍵獲取數據庫值ActiveRecord

我酷列表項 - 「真棒標籤」

每個列表項都有一個,且只有一個標籤; tag_id是我列表中的外鍵,它是我模型中的必需字段。

我一直在想我可以嘗試這樣做,但我不是最佳做法相當肯定的方式...

  1. 與所有標籤的數組創建一個@tags類變量,對於每個列表項,循環查看id是否匹配。如果他們這樣做,顯示標籤名稱。

  2. 在我的list_item模型的自定義方法,其中通過列表項我環路和附加標籤名稱的列表對象,這樣我可以在我看來,通過@list_item.tag_name訪問它(我不知道這是否可以連這樣做)。

  3. 編寫自定義SQL查詢以將標記名稱獲取到活動記錄結果中。例如:

    SELECT list.descriptions, tag.name 
    FROM list_items AS list 
    INNER JOIN tags AS tag 
    ON(list.tag_id = tag.id) 
    

雖然這似乎是資源最友好的,第三個選項好像很多工作了這麼基本的東西。

霍勒如果你想任何額外的信息。

回答

0

您還可以使用:

@list_item.tag.name 

它不需要任何額外的代碼,所以它是可以理解的那些誰不熟悉delegate

+0

這工作完美。謝謝! – 2012-07-18 13:36:07

1

使用委託

添加在LIST_ITEM模型此行

delegate :name, :to => :tag, :prefix => true 

現在,您可以通過使用

@ list_item.tag_name

訪問標籤名稱這是更喜歡你的第二選擇。

查看關於委託在這裏更多的細節: http://www.simonecarletti.com/blog/2009/12/inside-ruby-on-rails-delegate/

+0

我要檢查一下代表團,並對此進行更多的研究。謝謝你的領導。 – 2012-07-18 13:37:16

相關問題