我有一个 RoR 应用程序,脚手架生成为我的模型提供了新的和编辑操作。在视图中,有一个 _form.html.erb。此表单具有两个字段的输入,这两个字段也恰好是 attr_accessible,但没有输入字段如created_at
,updated_at
和id
。
我想为我的所有模型生成一些自定义的其他表单和视图。我想知道如何以编程方式找到应该手动设置的字段,以及 Rails 设置的字段。如果我有一个模型 Widget,那么 Widget.columns 会给出所有字段。
Rails 脚手架生成如何知道将哪些字段放入表单中。此外,是否有代码确定如何设置“created_at”和“updated_at”?或者这是由数据库完成的?
更新:为了澄清,我想具体做一些事情:
我正在生成用于上传大量行/实体的表单。所以我需要知道表单中要包含哪些字段。是否总是
Widget.accessible_atributes
要手动设置字段?我需要知道要自动包含哪些字段。如果我使用模型的新方法,
created_at
,updated_at
, 和id
会自动设置。我想在表中加载 1000 行我会执行类似 SQL 加载文件命令的操作,我想我需要设置 created_at 和 updated_at 但不是 id。我怎么知道要设置哪些字段。我正在寻找一些假设的方法,例如>> Widget.auto_columns # returns {:created_at => '04/12/2013 9:29pm', :updated_at => '04/12/2013'}
更新 2:试图看看脚手架是如何完成的,我看到在gems/railties/lib/rails/generators/erb/scaffold/templates/_form.html.erb中,代码使用了类似于属性数组的东西,它只包含显示在表格中。
<% attributes.each do |attribute| -%>
<div class="field">
<%%= f.label :<%= attribute.name %> %><br />
<%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
</div>
<% end -%>
<div class="actions">
<%%= f.submit %>
</div>
<%% end %>
我认为属性数组是在支架_generator.rb 中使用 thor 的参数方法生成的。