2011-12-27 43 views
0

我想創建一個沒有持久層(ActiveRecord,MongoMapper等)的Rails應用程序。我在rails new nice_app上使用了--skip-active-record。這已經改變了的config/application.rb中,但是當我嘗試創建新的「模式」與Rails的生成 - rails g model nice_class - 它無法像一個小白:Rails 3生成沒有持久層支持

沒有提供所需的選項'--orm的價值

所以,如果我跳過ActiveRecord我不能使用Rails生成器?

回答

1

注意當您運行rails g model nice_class是被調用的任務:

invoke active_record 
    create db/migrate/20111227183458_create_nice_classes.rb 
    create app/models/nice_class.rb 
    invoke rspec 
    create  spec/models/nice_class_spec.rb 

你注意到的第一件事,就是它的使用ActiveRecord生成模型。除此之外,它並沒有做太多:在migrations文件夾(你不需要)中創建一個文件,在model文件夾中創建另一個文件(你確實需要),以及在test或spec文件夾中創建一個文件(你應該'需要)。你可以自己做,如果你想要的話,他們已經非常接近於空了。

有關不基於ActiveRecord的模型的詳細信息,請查看Ryan Bates的「Tableless Models」Railscast:http://railscasts.com/episodes/193-tableless-model

如果您打算製作這些非ActiveRecord模型的種類很多,您可以編寫自己的生成器,它完全符合您的要求。

祝你好運。

1

由Rails生成器生成的模型是ActiveRecord的子類,它只在具有ORM的應用程序的上下文中才有意義。您當然可以創建模型,其中不是 ActiveRecord的子類(因此不與任何ORM關聯),但您必須手動執行此操作。

+0

是的,我現在明白了,但這很奇怪,因爲Rails生成器可以讀取MongoMapper配置,併爲MapperDocument包含一個mixin。我認爲如果還配置了非ORM層,它可能會返回一個空的「模型類」。 – hlegius