Ruby on Rails中的Find_by_id

时间:2013-12-17 17:30:46

标签: ruby-on-rails ruby ruby-on-rails-4 spree

我的产品可以是程序集部分。我只有一个程序集,我称之为捆绑

最初,鉴于产品部分,我添加了一个额外选项

如果我使用

<% if @product.parts.any?(&:in_stock?) %>
 HERE I SHOW OPTION FORM
<% end %>

这有效,并显示我的选项。但是现在我有另外一个选项,我想表现出来。

我需要显示相应ID的选项。我的原始产品部件的ID似乎是“捆绑”,所以我尝试了:

<% if @product.parts.find_by_id('bundle') %>

但是我的选项无法加载。我有什么想法可能做错了吗?我没有收到错误,只是没有找到该ID。

Rails 4&amp;狂欢2.1+

2 个答案:

答案 0 :(得分:2)

除非您使用像friendly_id这样的宝石,否则我认为您的部件的ID不会是'捆绑'。通常它们是自动增量整数。你是100%肯定那是id吗?我建议查看内置于查找方法here的rails。看起来你可能想要find_by_name。

答案 1 :(得分:0)

我的架构显示我正在寻找的是一个整数:

    t.integer "part_id"

该特定产品部件正在加载DB:

Spree::AssembliesPart Load  SELECT "spree_assemblies_parts".* FROM "spree_assemblies_parts" WHERE "spree_assemblies_parts"."assembly_id" = 4 AND "spree_assemblies_parts"."part_id" = 6 LIMIT 1

然后我使用了加载的part_id,在我的例子中是6.

然后这个find_by方法起作用了:

    <% if @product.parts.find_by_id('6') %>