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#putsまたはKernel#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.fooFooであるクラス名を返します。ただし、次の場合

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 に答える