2013-03-11 65 views
0

免责声明,我是ruby/rails n00b。在Ruby中是“名称”保留的属性,如果是的话,我该如何使用:名称属性?

我有一个简单的ActiveRecord类:

class LandingPage < ActiveRecord::Base 
attr_accessible :name, :parent_id, :published 
end 

现在,我还没有制定出的格局还没有,但有时object.name返回正确的值,其他时间object.name或者,里面的类,self.name返回值是这样的:

<的LandingPage:0x007fd05c605980 >

我guessi这是因为“名称”就像一个保留的属性?但有时它有效。我可以使用“名称”作为财产吗?

+1

可以肯定使用“名称”作为属性名。你的问题似乎有所不同。请提供更多信息。 – 2013-03-11 11:04:29

+0

使用对象[0] .name – 2013-03-11 11:06:56

回答

1

,如果你是一个类的方法

class Foo 
    def self.foo 
    puts self.name 
    end 
end 

Foo.foo将返回类名是富里。不过,考虑到以下

class Foo 
    attr_accessor :name 

    def self.foo 
    puts self.name 
    end 

    def method1 
    puts self.name 
    end 
end 

Foo.new(name: 'my name').method1将返回my name

2

名称不是Ruby中的保留属性,也不是Ruby on Rails中的保留属性。我想你会打印出to_s方法的返回值。

如果您使用的是穷人的调试器(Kernel#putsKernel#p),那么它将使用to_s方法。

尝试:

puts landing_page.name 

,而不是puts landing_page。或者,如果你在一个视图中使用它,这是相同的:

<%= @landing_page.name %> 

,而不是<%= @landing_page %>

+0

+1谢谢Karaszi!你是完全正确的。我对jvnill给出了答案,因为它更直接地回答了问题,但是你100%正确。 – andy 2013-03-11 15:22:51

相关问题