在rails命令中添加额外属性

时间:2011-12-05 11:57:35

标签: ruby-on-rails-3 scaffold

在尝试使用 - collection> rails generate scaffold Items name:string subcategory_id:integer users_id:integer生成新的脚手架时,我错过了'users_id:integer'以及我可以在其上使用此属性而不是再次运行完整命令的方式。

由于

3 个答案:

答案 0 :(得分:4)

不是真的。

如果您尚未向现有脚手架添加任何新内容(并且只是担心必须删除/重新创建所有这些文件),那么您可以先运行destroy然后重新创建,例如:

rails destroy scaffold Items
rails generate scaffold Items name:string subcategory_id:integer users_id:integer

答案 1 :(得分:4)

如果您还没有推送迁移,可以编辑db / migrate / 201112 * create_items.rb并添加以下行:

add_column :items, :users_id, :integer

如果您已经推送了迁移,请创建另一个:

rails generate migration AddUsersIdToItems users_id:integer
rake db:migrate

然后你必须手动编辑脚手架代码:

vi app/views/items/_form.html.erb

复制< div>对于subcategory_id并将其更改为:users_id

<div class="field">
  <%= f.label :subcategory_id %><br />
  <%= f.number_field :subcategory_id %>
</div>
<div class="field">
  <%= f.label :users_id %><br />
  <%= f.number_field :users_id %>
</div>

或者,如果你正在运行git,你可以运行“git checkout”。在运行第一个脚手架生成器后,这将撤消所有更改,然后您可以再次运行它。

答案 2 :(得分:0)

这是一个非常古老的问题,但在我创建自己的发电机之后,另一个答案就在我身上。如果由于某种原因,模型的属性发生了变化,无论是通过迁移添加还是删除了属性,并且您希望在脚手架视图中反映这一点,只需运行您想要的所有属性的脚手架,也可以使用 - 跳过迁移选项。出现提示时,选择覆盖要覆盖的视图。

如果您忘记添加属性,请使用迁移添加它(rails g migration AddXXXToYYY field:type)然后再次运行脚手架,就像我上面解释的那样。

此解决方案适用于遇到此问题的任何新Rails用户。每当数据库发生变化时,手动更改视图都会很有趣。