在Rails中,我如何能通过编程定义许多复杂的相关对象,然后跟踪用户对其状态的变化?[已关闭]

问题描述 投票:0回答:1

这可能是一个不寻常的情况,也是一个很难措辞的问题,所以请耐心等待。

比方说,我在我的Rails应用中代表一个巨大的房子。这个房子是由 Rooms 和 Doors 组成的。Room 和 "门 "组成。Door 是我的模型。房子可以有成千上万的房间和门。

但我 -- 开发者 -- 想预先定义所有的房间、门,以及它们之间的关系。我想用编程的方式定义它们,而不是让用户来制作它们。当应用程序启动时,所有这些房间和门都存在。用户就可以通过一些方式来修改它们,比如改变油漆的颜色或者锁定一扇门。

所以房间和门可以有状态。但房子的布局是预定义的。所以房间的名字,以及房间里有哪些门也是预定义的。

我在寻找什么。

  • 我需要写代码或标记来定义房间和门 它们的布局和它们的默认状态。房间和门都可以有自己的方法和功能。
  • 用户对房间和门所做的修改--比如锁定一扇门或改变一个房间的油漆颜色--被存储在状态(ActiveRecord)中。这个状态可以被我这个开发者重置为我建立房间或门的默认状态。
  • 我可以在未来开发新的房间和门,在新版本的应用中发布它们。

我如何去实现这样的事情呢?

ruby-on-rails ruby activerecord architecture rails-activerecord
1个回答
1
投票

你所描述的本质上只是一个普通的应用程序(Rails或任何其他类型)。你定义了你的实体(模型),它们所拥有的属性,以及它们之间的关系。在创建用户界面时,用户可以创建、删除或简单地改变属性的实体种类是你的选择。

这个问题太宽泛了,无法详细介绍,但用Rails的术语来介绍一下你特别问到的几件事。

  1. 你可以使用 db/seeds.rb档和 rails db:seed 任务来填充您的数据库到特定的已知状态,一旦您定义了您的模型。重置到该状态的方法很简单,就是丢弃表并重新运行 db:seed. 编写批量更新数据的脚本任务也相对容易,不需要强制完全重置数据库。添加额外的预定义数据也是如此。
  2. 当你为你的资源创建路由(config/routes.rb) Rails默认为所有CRUD(CReateUpdateDelete)操作创建路由actions。但是,要覆盖这种行为很简单,只创建适合该类型的 routesactions。

    resources :rooms, only: [:index, :edit, :update]
    
© www.soinside.com 2019 - 2024. All rights reserved.