2

Railsを試して学ぶために使用している単純なRailsアプリケーションがあります。

ActiveRecord を使用して次のように作成したデータベース テーブルがあります。

class CreateMovies < ActiveRecord::Migration
  def up
    create_table :movies do |t|
      t.string :title
      t.string :rating
      t.text :description
      t.datetime :release_date
      t.timestamps
    end
  end

  def down
    drop_table :movies
  end
end

これが私の対応するモデルクラスです:

class Movie < ActiveRecord::Base
  def self.all_ratings
    %w(G PG PG-13 NC-17 R)
  end

  def name_with_rating()
    return "#{@title} (#{@rating})"
  end
end

Movie のインスタンスで name_with_rating を呼び出すと、返されるのはすべての Movie の "()" だけです。Movie のインスタンス メソッド内から Movie インスタンスのフィールドを取得するために呼び出す正しい構文またはメソッドは何ですか?

データベースにはムービー行などが適切に入力されていることに注意してください。rake db:create、rake db:migrate などを実行しました。

4

2 に答える 2

4

アクティブ レコードの属性は、インスタンス変数として実装されません。試す

class Movie < ActiveRecord::Base
  def name_with_rating()
    return "#{title} (#{rating})"
  end
end
于 2012-08-22T03:25:17.577 に答える
1
class Movie < ActiveRecord::Base
  def name_with_rating
     "#{title} (#{rating})"
  end
end

その後、コンソールで動作するMovie.first.name_with_ratingはずです。

于 2012-08-22T03:39:18.813 に答える