Ruby on rails 3 ActiveRecord“选择”模型方法的结果

Ruby on rails 3 ActiveRecord“选择”模型方法的结果,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我有一个Rails应用程序,可以从Soundcloud中提取音乐。此数据包含一个标题,我将其另存为mix.sc_title,但它的格式并不总是正确的。我在我的混合模型上添加了一个附加属性,我称之为Mix.override\u title 对于在我的站点上显示,如果可用,我希望使用覆盖标题,在所有其他情况下使用sc_标题 我有一个混合模型的方法来为我做到这一点 def display_title override_title.blank? sc_title : override_title

我有一个Rails应用程序,可以从Soundcloud中提取音乐。此数据包含一个标题,我将其另存为mix.sc_title,但它的格式并不总是正确的。我在我的混合模型上添加了一个附加属性,我称之为Mix.override\u title

对于在我的站点上显示,如果可用,我希望使用覆盖标题,在所有其他情况下使用sc_标题

我有一个混合模型的方法来为我做到这一点

def display_title
    override_title.blank? sc_title : override_title
end
MixeIndex抓取@mixes=Mix。其中:active=>true和mixes/index.html.erb如下所示:

<ul>
<% @mixes.each do |mix| %>
    <li><%= link_to mix.display_title, mix %></li>
<% end %>
</ul>
如您所见,我没有直接使用任何混合属性,因此当我转到DB时,我受到了巨大的冲击,实际上我并没有从中受益

有没有更简单的方法来获取我需要的信息?mix.display\u标题

我已经尝试过混合。选择display\u title。其中:active=>true,但失败,因为display\u title不是真正的DB列

您可以进行混合。选择SC\u title,覆盖\u title。其中:active=>true将起作用,因为这些是方法使用的实际字段。我真的不认为获得额外的属性会给你带来那么多的DB命中率,但是有时候只选择你需要的东西是有益的

当你开始链接更多的ALEL命令时,考虑将SELECT放入模型方法:

def select_active_titles
  select("sc_title, override_title").where(:active => true)
end
编辑:您指向帮助程序的链接也会秘密调用mix.id来链接到正确的混合,因此请确保它正常工作,如果没有,请将id添加到选定属性的列表中