0

私はRubyを初めて使用し、アソシエーションについて触れたばかりです。これが私のモデルです:

class Subject < ActiveRecord::Base

  has_many :pages

  scope :visible, where(:visible => true)
  scope :invisible, where(:visible => false)
  scope :search, lambda {|query| where(["name LIKE ?", "%#{query}%"])}
end

class Page < ActiveRecord::Base

  belongs_to :subject
  has_many :sections
  has_and_belongs_to_many :editors, :class_name => "AdminUser"

end

私のチュートリアル(psh ..それは何を知っていますか)は、次のように最初の主題を見つけた後、「subject.pages」と入力するように私に言いました:

Loading development environment (Rails 3.0.10)
irb(main):001:0> Subject.find(1)
=> #<Subject id: 1, name: "Initial Subject", position: 1, visible: true, created
_at: "2010-09-29 20:51:09", updated_at: "2010-09-29 21:07:42">
irb(main):002:0> subject.pages
NameError: undefined local variable or method `subject' for main:Object
        from (irb):2
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.10/lib/rails/comma
nds/console.rb:44:in `start'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.10/lib/rails/comma
nds/console.rb:8:in `start'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.10/lib/rails/comma
nds.rb:23:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'
irb(main):003:0>

チュートリアルによると、空の配列で戻ってくるはずです。私はGoogle、このサイト、Yahoo Answersをどこでも検索して、考えられる説明を探しました。すべてが私には正しいようです。誰か助けてもらえますか?

4

1 に答える 1

4

Subject.find(1)他の言語の場合と同じように、使用する前にの結果を変数に格納する必要があります。

subject = Subject.find(1)

その後、あなたはすることができますsubject.pages。それ以外の場合subjectは何も参照しません。

または、を使用_して、最後の式の戻り値を参照することもできます。したがって、入力Subject.find(1)してから_.pages

ただし、Rubyを初めて使用する場合は、このチュートリアルとおそらくこのチュートリアルを実行することをお勧めします。勇気がある場合は、このガイドを参照してください。

于 2011-08-25T05:02:41.160 に答える