2013-10-18 73 views
0

原諒我的無知,如果我失去了一些非常微不足道的東西,我很新回報如何在Ruby on Rails中擴展ActiveRecord :: Base時指定列名和類型?

Django的背景的我記得型號是一樣

class Post(models.Model): 
    title = models.CharField(max_length=100) 
    description = models.TextField() 

都列名和字段類型都明確規定。

凡爲,當我寫這篇文章軌命令

> rails g model Post title:string description:text 

我得到的是

class Post < ActiveRecord::Base 
    attr_accessible :description, :title 
end 

是否有同時延長ActiveRecord::Base,而不是讓他們來寫列名和字段類型的方式只在遷移文件中?

感謝,任何幫助表示讚賞

回答

0

attr_accessible已被棄用,雄厚的PARAMS取代它的功能在控制器中。

如果您想獲取模型文件中架構信息的列表,您可以在文件的頂部註釋它。這在某些時候是最佳實踐,但我認爲它沒有多少用處。我個人不喜歡這個,只是使用架構。

後的最佳做法和註解: http://rails-bestpractices.com/posts/68-annotate-your-models

寶石自動譯註: https://github.com/ctran/annotate_models

+0

你的意思是沒有辦法在軌道做到這一點,我的意思是我知道我可以評論,但沒有軌道語法來做到這一點? – Optimus

+0

我不知道有任何方法可以做到這一點。即使有一種方法,你不應該在Rails中做到這一點。它將走出黃金之路。使用遷移有什麼問題? 如果你真的想在模型中設置一些東西,你可以使用alias_attribute。你需要有一個已經存在的列名。 alias_attribute:new_column_name,:real_column_name – mpiccolo

0

約ActiveRecord的最美妙的事情是,你不需要做任何映射,如所有字段正在使用當前模式自動映射。當然,如果需要,默認映射可以被覆蓋,但這是非常罕見的情況。

這種方法被稱爲「約定優於配置」,並且遍佈於Rails--它假定您正在嘗試實現的最常用參數,因此可以節省大量不必要的編碼和映射。它可能會在開始時感到奇怪,尤其是您需要學習如何覆蓋這些默認設置,但我保證當您習慣時會喜歡它。 :)

相關問題