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 回答