【发布时间】:2015-04-12 04:13:04
【问题描述】:
我希望是个简单的问题。我有几个类 - 用户和食谱 - 两者都有“成分”作为孩子,通过“有很多”的关系。我想运行一个比较来检查 User.ingredients 是否包含每个食谱的成分。
我认为是一个简单的“包含?”查询可以解决这个问题,但在实施时它返回 nil。感觉这是因为我将它应用到一个类而不是数组(尽管 User.ingredients 不返回一个数组?!),虽然不知道我应该如何调整它以使其工作 - 我已经尝试转换项目到数组,拔出 id 等,但还没有任何工作。
非常感谢任何帮助!史蒂夫。
这是控制器代码:
def meals
@recipes = Recipe.all
@user = current_user #from my user authentication
end
即使两者都包含相同的成分,(删节的)视图也会返回 nil:
<% @recipes.each do |recipe| %>
<% if @user.ingredients.include?(recipe.ingredients) %>
<!-- ... -->
<td>
<%= recipe.name %>
</td>
<% end %>
<% end %>
另外一点 - 在控制台中测试这个,我注意到运行 .include?如果它们的顺序错误,则在成分 ID 数组上不匹配。这也需要解决吗?
【问题讨论】:
标签: ruby-on-rails ruby arrays has-many-through comparison-operators