我的产品可以是程序集的部分。我只有一个程序集,我称之为捆绑。
最初,鉴于产品有部分,我添加了一个额外选项
如果我使用
<% 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+
答案 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') %>