我有一个简单的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等。
答案 0 :(得分:4)
活动记录属性未实现为实例变量。尝试
class Movie < ActiveRecord::Base
def name_with_rating()
return "#{title} (#{rating})"
end
end
答案 1 :(得分:1)
class Movie < ActiveRecord::Base
def name_with_rating
"#{title} (#{rating})"
end
end
然后在控制台Movie.first.name_with_rating
中应该可以工作。