如何在rails中获取对象的模型名称?

时间:2016-07-20 05:59:30

标签: ruby-on-rails

我有四种不同的模型。

这是一个例子,

@single = Single.all
@coe = Coe.all
@blend = Blend.all
@production = @single+@coe+@blend

然后如何检查@production是哪个模型?

我试过

<% @production.each do |p| %>
  <%=p.class.name%>
<% end %>

但它会返回&#34;数组&#34;

这似乎很简单,但我无法找到答案 (我编辑了问题)

3 个答案:

答案 0 :(得分:6)

问题出在这里

@single = Single.all
@coe = Coe.all
@blend = Blend.all
@production = @single+@coe+@blend

更改这些行
@single = Single.all.to_a
@coe = Coe.all.to_a
@blend = Blend.all.to_a
@production = @single+@coe+@blend

然后你会检查

@production.first.class.name #Single
@production.last.class.name #Blend

所以在你看来你可以做到这一点

<% @production.each do |p| %>
  <% p.each do |product| %>
    <%= product.class.name %>
  <% end %>
<% end %>

答案 1 :(得分:1)

如果在@production上迭代时返回数组,那么你需要尝试这个。

<% @production.each do |p| %>
  <% p.each do |product| %>
    <%= product.class.name %>
  <% end %>
<% end %>

答案 2 :(得分:0)

@production是单个,coe和混合的组合的集合,这就是为什么@production.class.name不起作用,你需要像这样迭代每个对象:

<% @production.each do |object| %>
  <%= object.class.name %>
<% end %>