这可能是一个不寻常的情况,也是一个很难措辞的问题,所以请耐心等待。
比方说,我在我的Rails应用中代表一个巨大的房子。这个房子是由 Rooms 和 Doors 组成的。Room
和 "门 "组成。Door
是我的模型。房子可以有成千上万的房间和门。
但我 -- 开发者 -- 想预先定义所有的房间、门,以及它们之间的关系。我想用编程的方式定义它们,而不是让用户来制作它们。当应用程序启动时,所有这些房间和门都存在。用户就可以通过一些方式来修改它们,比如改变油漆的颜色或者锁定一扇门。
所以房间和门可以有状态。但房子的布局是预定义的。所以房间的名字,以及房间里有哪些门也是预定义的。
我在寻找什么。
我如何去实现这样的事情呢?
你所描述的本质上只是一个普通的应用程序(Rails或任何其他类型)。你定义了你的实体(模型),它们所拥有的属性,以及它们之间的关系。在创建用户界面时,用户可以创建、删除或简单地改变属性的实体种类是你的选择。
这个问题太宽泛了,无法详细介绍,但用Rails的术语来介绍一下你特别问到的几件事。
db/seeds.rb
档和 rails db:seed
任务来填充您的数据库到特定的已知状态,一旦您定义了您的模型。重置到该状态的方法很简单,就是丢弃表并重新运行 db:seed
. 编写批量更新数据的脚本任务也相对容易,不需要强制完全重置数据库。添加额外的预定义数据也是如此。当你为你的资源创建路由(config/routes.rb
) Rails默认为所有CRUD(CReateUpdateDelete)操作创建路由actions。但是,要覆盖这种行为很简单,只创建适合该类型的 routesactions。
resources :rooms, only: [:index, :edit, :update]