0

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

我有一个简单的 ActiveRecord 类:

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

现在,我还没有制定出模式,但有时 object.name 返回正确的值,有时 object.name 或者在类内部,self.name 返回如下值:

<登陆页面:0x007fd05c605980>

我猜这是因为“名称”就像一个保留属性?但有时它会起作用。我可以使用“名称”作为属性吗?

4

2 回答 2

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

于 2013-03-11T11:03:21.417 回答
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

于 2013-03-11T11:07:10.297 回答