免责声明,我是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;
我猜是因为“名字”就像一个保留财产?但有时候它有效。我可以使用“名字”作为财产吗?
答案 0 :(得分:2)
Name不是Ruby中的保留属性,也不是Ruby on Rails中的保留属性。我想你打印出to_s
方法的返回值。
如果您正在使用穷人的调试器(Kernel#puts
或Kernel#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