2012-08-01 99 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