如何访问Ruby / Object属性

时间:2013-01-14 07:11:16

标签: ruby

调试输出如下所示:

!ruby/object:Business 
attributes:
  business_type: 8
  type_count: 2

但是如何访问这些属性?

我在这里感到愚蠢:/

编辑: 我认为还有一些代码:

<% @serviceSections.each do |k,v| %>
<% c = @bc.select{|s| s.business_type == k} %>  
<%= debug(c.type_count) %>
<% end %>

这只是给我错误

  

未定义的方法`type_count'用于[#&lt;业务business_type:8&gt;]:数组

EDIT2

我主要是个白痴:-)已经晚了......

我需要做的就是检查:

<% if !c.respond_to?("type_count") %>

2 个答案:

答案 0 :(得分:4)

Business.business_type # => 8
Business.type_count # => 2

这要求在Business类中定义一个属性读取器,通常是这样的:

class Business
  attr_reader :business_type, :type_count
  # more code ...
end

如果您想要set值,则应该定义属性访问者:

class Business
  attr_accessor :business_type, :type_count
  # more code ...
end

然后你就可以:

Business.business_type = 17
Business.type_count = 22

答案 1 :(得分:1)

Documentation说:“虽然在上面的示例中看起来好像这个方法返回一个数组,它实际上返回一个关系对象,并且可以附加其他查询方法,例如ActiveRecord中的其他方法: :QueryMethods“

考虑到这一点,以下应该做的伎俩

c.each do |r|
  puts r.type_count
end

如果您确定select只会返回一条记录,那么以下内容也会有效。

<%= debug c[0].type_count %>

相关问题