Tag: 数据库设计

考勤跟踪应用中的迁移和模型

我想整理一个可以跟踪“用户”出席的应用程序(ruby on rails + mysql),但是,我正在努力解决如何将数据组织到表中的问题。 我很欣赏有关可能的表/迁移结构的建议。 以下是我迄今为止提出的建议: 出勤表 date DATE user_id INT status INT 从本质上讲,我希望(很像出勤登记)标记为“全天/半天或缺席”的“用户”。 我希望能够查看用户的出勤记录,可变期间(即过去30天,15天,3天等) 谢谢。

Rails模型has_many

我今天开始学习rails并不太确定它是如何工作的: 可以说我有一家公司,该公司可能有很多子公司。 子公司是公司。 由于显而易见的原因,公司不能成为自己的子公司。 子公司不能拥有也是公司子公司的子公司 所以子公司也可以拥有子公司,所以它无限制地嵌套 我不确定的是,子公司是一家公司 class Company < ActiveRecord::Base has_many :subsidiaries end class Subsidiary < ActiveRecord::Base belongs_to :companies end 我确定这是错的,只是把东西放在这里 更新: 好的,所以我按照下面的说明操作: class Company < ActiveRecord::Base validates :name, presence: true belongs_to :company has_many :subsidiaries, foreign_key: 'company_id', class_name: 'Company' end 在我的一个模板中: 0 ? “(#{company.subsidiaries.length} subsidiaries)” :”” }”, company_path(@company, :id => company.id) %> 现在这是错误的,会发生的事情是,有子公司的Ones显示他们没有子公司,而子公司显示他们有子公司,所以基本上它现在显示它的父母,它的“孩子” 不知道为什么会这样?

用于创建与嵌套模型的多对多关系条目的表单

我的应用程序包括以下五种模型: 超市可以有不同类别的产品,这些类别的产品可以由多个品牌生产。 现在我希望在我的超市 –forms中有一个(或两个) 选择字段,我可以在其中选择一个元素,其名称出现,一个或多个元素出现在Brand中,所以这可以存储在Origin中 。 我想我可以使用collection_select ,但我如何在这里使用它? class Supermarket :supplies end class Supply < ActiveRecord::Base belongs_to :origin belongs_to :supermarket end class Origin < ActiveRecord::Base belongs_to :category belongs_to :brand end class Category < ActiveRecord::Base has_many :origins end class Brand < ActiveRecord::Base has_many :origins end 也许,我还要调整模型…… 编辑 澄清表格的结果应该是: 在编辑超市的forms中,我想选择一个类别的产品和相应的品牌,以便我知道在这个特定的超市中销售此类别中的哪个类别和哪些品牌 : 超市(表格): 超市名称: 沃尔玛 类别 (选择一个): 可乐(Category_ID […]

在数据库中存储日期和费率

这种情况的最佳做法是什么? 我正在建立一个预订系统,我正在寻找捕获和存储用户信息的最佳方法。 每个资源都可以使用一天,最多可以占用任意数量的用户。 例如,假设这是一个最多可容纳5人的热气球。 我希望我的表单看起来像这样: [Buttons to select # of guests] // So if a user wants the same price for 1-3 people he only has to enter it once. From [START DATE] to [END DATE]: [RATE] // Where the []’s are input fields for the user 我计划将每个价格存储在数据库中: Date, # of guests, rate 每个日期都有一行。 所以我需要将“ […]

使用Postgres hstore的竞争条件

我有一个表,其中包括许多其他领域的一个hstore DB / schema.rb create_table “requests”, force: true do |t| t.hstore “parameters” end 一些记录具有字段parameters[“company_id”]但不是全部。 我需要做的是确保只使用给定parameters[“company_id”]创建一个Request对象。 可能有多次尝试同时保存记录 – 因此竞争条件。 我在整个表中的hstore寻找唯一的company_id值。 我发现我可以运行一个事务来锁定数据库并检查具有给定parameters[“company_id”]的请求是否存在,如果不创建它。 如果company_id是Request模型上的一个简单字段,我可以这样做: Request.transaction do if Request.find_by(company_id: *id* ) log_duplication_attempt_and_quit else create_new_record log_successful_creation end end 不幸的是它是hstore而我无法改变它。 使用hstore实现这一目标的最佳方法是什么? 我正在寻找快速的东西,因为表中有很多记录。 纯SQL查询没问题 – 遗憾的是我没有足够的SQL背景来弄明白我自己。 这可以为性能编制索引吗? 例: a = Request.new(parameters: {company_id: 567, name: “John”}) b = Request.new(parameters: {name: “Doesn’t have company_id […]

我应该如何为此订单情况设置数据库表

我正在为一家印刷公司构建一个Web应用程序,并试图确定我的数据库的最佳设计。 我有一张orders表。 每个order都有很多certificate。 但是,有两种不同的certificate:电子certificate和物理certificate。 此外,如果它是电子证据,我需要存储图像源,如果它是物理证据,我需要存储跟踪号码。 每个证据都有很多与之相关的评论。 如果我可以只有一个proofs表和一个comments表,那将是很好的,但根据proofs样类型跟踪图像源和跟踪号码的最佳方法是什么? 我考虑过为electronic_proofs和physical_proofs创建单独的表,但这需要制作一个单独的electronic_proof_comments表和physical_proof_comments表。 另一种选择是拥有一个proofs表,在这种情况下我可以有一个comments表。 但是,正如我所看到的,这将需要三个支持表, proof_types , image_sources和tracking_numbers 。 有关最佳方式的想法,还是解决这个问题的更好方法?

Rails模型与外键本身

我有一个Oracle DB模式,其中包含一个“用户”表。 此表有两个非空外键给编辑器和创建者,它们也是用户。 架构转储如下所示: create_table “users”, :force => true do |t| t.integer “creator_id”, :precision => 38, :scale => 0, :null => false t.integer “editor_id”, :precision => 38, :scale => 0, :null => false end add_foreign_key “users”, “users”, :column => “creator_id”, :name => “r_user_creatorid”, :dependent => :nullify add_foreign_key “users”, “users”, :column => “editor_id”, :name => “r_user_editorid”, […]

您将如何使用rails和ActiveRecord中的引用和引用对文章进行建模?

一篇文章引用了许多文章,许多其他文章也可以引用它。 有时,文章可以引用也引用它的文章。

在使用连接表时,如何处理重复的副作用 – 即回报友谊等

在rails中使用连接表总是会给我带来麻烦,特别是在假定往复时必须创建重复的条目。 即我添加某人作为朋友,我自动成为他们的==需要两个连接。 拿一个简单的收据应用程序,跟踪两个人,谁花了什么。 用户可以拥有多个朋友。 对于每个FRIEND,他们可以跟踪多个TABS(即用于杂货的标签,另一个用于账单等),每个TABS由USER添加多个RECEIPTS。 所以在这种情况下,我需要一个FRIENDSHIP表,如果我假设当一个用户将另一个用户声明为朋友时,我需要创建两个友谊,这个手势是回报的。 这就是我的问题。 我需要将共享TAB链接到两个FRIENDSHIPS。 这基本上是在说 友谊有很多标签,标签有很多友谊。 这涉及另一个联接表…我是对的吗? 它似乎有很多重复,我想知道是否有更好的方法来做到这一点,或者你如何在你的代码中妥善处理这个? 你是否创造了许多回调以确保何时对一个友谊做了什么,对另一个友谊又重复了什么?

两个表作为Rails中的一个模型

是否可以在rails中设置依赖于两个表的连接的模型? 这意味着,为了找到/更新/销毁模型记录,需要在连接中链接在一起的两个数据库表中的两个记录。 该模型将只是两个表的所有列包装在一起,然后可以用于表单等。 这样,当模型被创建/更新时,它只是一个应用于模型的表单变量哈希? 在Rails 2或3中这可能吗?