6

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

谢谢

4

3 回答 3

4

并不真地。

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

rails destroy scaffold Items
rails generate scaffold Items name:string subcategory_id:integer users_id:integer
于 2011-12-05T12:48:16.007 回答
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

复制 subcategory_id 的 <div> 并将其更改为 :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”。在运行第一个脚手架生成器后,它将撤消所有更改,然后您可以再次运行它。

于 2011-12-05T12:53:01.263 回答
0

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

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

此解决方案适用于遇到此问题的任何 Rails 新用户。每当数据库更改时,手动更改视图并不有趣。

于 2014-09-11T04:47:08.027 回答