2012-07-18 52 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

相关问题