2012-08-01 150 views
0

Rails新手在这里。在Rails模型中重命名字段名称

我有没有控制权与评论表具有以下的列遗留sqlite3的数据库:

ID - 主键

BOOK - 外键

TEXT - 含现场评论和图书摘要

我有一个像下面一个Rails 3.2.1模型叫做评论(映射1-1书):

class Book < ActiveRecord::Base 
    has_many :datum, :foreign_key => "book" 
    has_one :comment, :foreign_key => "book" 

    @@basepath = "#{Rails.root}/public/share" 

    def get_filepath 
     return "#{@@basepath}/#{path}" 
    end 

    def get_summary 
     @comment.text 
    end 
end 

在我看来,我有这样的事情:

<td><%= book.get_summary %></td> 

但是,当我尝试的页面,我得到 未定义的方法'文本”的零:NilClass

貌似‘文本’是Rails中的保留字。我的猜测是,这是阻止铁路正确评估它。

我对错误的解释是否正确?如果是这样,我怎么能让Rails给“文本”字段一个不同的名字,如“comment_text”?

非常感谢您的帮助。

P.S.我已经看过http://www.engineyard.com/blog/2011/using-datamapper-and-rails-with-legacy-schemas/,但我不确定我的问题是否与此类似。

回答

1

更改此:

def get_summary 
    @comment.text 
end 

要这样:

def get_summary 
    comment.text 
end 

@comment没有意义在这个模型......你所访问的关联,这是comment

+0

这是伟大的。感谢您帮助新手。所以,@只是为了变量的实例?我来自Java背景,期望关联也是实例。 – Srini 2012-08-01 03:19:39

+0

在模型中,是的@基本上创建了一个只在该实例内可访问的实例变量。不是什么,我经常做。在这里看看更多的信息:http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes#Instance_Variables。如果你想在你的对象上创建没有存储在数据库中的变量,通常你会使用'attr_accessor' – 2012-08-01 12:43:36