在Ruby中,“name”是一个保留属性,如果是,我如何使用:name属性?

时间:2013-03-11 11:00:37

标签: ruby-on-rails ruby

免责声明,我是ruby / rails n00b。

我有一个简单的ActiveRecord类:

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

现在,我还没有计算出模式,但有时object.name返回正确的值,其他时间是object.name,或者在类中,self.name返回一个这样的值:

  

&LT;的LandingPage:0x007fd05c605980&GT;

我猜是因为“名字”就像一个保留财产?但有时候它有效。我可以使用“名字”作为财产吗?

2 个答案:

答案 0 :(得分:2)

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

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

尝试:

puts landing_page.name

而不是puts landing_page。或者,如果您在视图中使用它,则它是相同的:

<%= @landing_page.name %>

而不是<%= @landing_page %>

答案 1 :(得分:1)

如果你在课堂方法中

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

Foo.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