2012-11-15 60 views
0

所以我正在制作一个Rails应用程序来学习如何使用这个框架。有没有没有迁移的modyfiong新Rails模型的方法?

我创建使用用户:

rails g model User name:string 

然后我意识到我的用户还需要另一个属性,并称为user_role的另一资源的关系。 说我UserRole的模式是这样的:

rails g model userRole roleName:string 

到目前为止,我发现我只能实现使用迁移的变化,但是这是相当不方便,我不清楚,因为我真的没有任何旧数据,我只是调整我的模型。

任何建议为noob?

回答

0

迁移非常有帮助。它会跟踪您的模式更改。但是,如果您发现在创建迁移后忘记添加字段,则可以在不创建新迁移的情况下编辑旧的迁移。如果您已经迁移了数据库(使用rake db:migrate),则可以回滚。

rake db:rollback 

现在,编辑迁移文件并添加/删除您的字段。完成后,再次迁移

rake db:migrate 

当您创建单独的模型时,您应该创建单独的迁移。否则,将来你会感到困惑。顺便说一句,当创建儿童模型时,您不需要对父迁移进行任何更改。您需要在子表中添加外键。你可以使用这样的东西:

rails g model Comment post:references 

这将在评论表中添加post_id

0

你可以尝试一个非数据库支持的ActiveModel模型。例如,Mongoid或Datamapper。许多NoSQL解决方案不需要迁移以更改模型。

0

试试这个:

rails g model ModelName --migration=false 
+0

虽然这个代码片断是值得欢迎的,并可以提供一些帮助,这将是([极大,如果它包括一个改进的解释// meta.stackexchange.com/q/114762 )* how *和* why *解决了这个问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –