Rails 4:has_many通过关联对象永远不会返回nil

时间:2015-11-17 16:04:21

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

我有两个模型,帖子和类别。它们通过has_many通过关联连接。分类是直通表。

Posts3 JOIN Votes

我的一些帖子不属于任何类别。可以在不选择任何类别的情况下发布。问题是@category永远不会显示为零。我执行此检查

@post= Post.find(params[:Post_id])
@category = @post.categories

即使没有类别,此代码也不会进入else块。这是为什么?在这种情况下如何检查nil?

2 个答案:

答案 0 :(得分:3)

@post.categories返回一个activerecord关系,而不是nil。因为你正在使用rails我会使用present?

检查它的存在
<% if @vertiefungsrichtungs.present? %>
   # do something
<% else %>
   # do something else
<% end %>

答案 1 :(得分:0)

由于您可能有多个类别,因此您可能希望对它们执行某些操作,而不仅仅是检查是否存在任何类别。

在这种情况下,你可以做的一件事是为每个类别渲染一个部分:

<%= render partial: my_category, collection: @category, as: :category %>

你应该有一个部分_my_category.html.erb

<%= category %>

如果没有类别,则不会呈现my_category部分,因此,视图中不需要额外的逻辑。