【问题标题】:Rails join table record creationRails 连接表记录创建
【发布时间】:2013-08-16 18:22:12
【问题描述】:

如果我有一个名为 :inventory_items_shopping_lists 的 HABTM 连接表,我如何在该表中创建和调用记录?我没有连接模型。两个加入的模型是:inventory_items:shopping_lists。我希望能够让用户将:inventory_items 添加到他们的:shopping_lists。提前致谢!

编辑

以下是相关模型和我的目标:

class InventoryItem < ActiveRecord::Base

    belongs_to  :item, :foreign_key => :item_id
    belongs_to  :vendor
    has_many    :list_items
end

class ListItem < ActiveRecord::Base
    belongs_to  :inventory_item, :foreign_key => :item_id
    belongs_to  :shopping_list
end

class ShoppingList < ActiveRecord::Base
    has_many :list_items
    belongs_to  :user, :foreign_key => :user_id
end

我正在尝试将:user 添加到:inventory_items:shopping_list,它们将变为:list_itemslist_items 具有与:inventory_items 几乎相同的属性,因此我可能只是通过关联来引用这些属性,而不是通过复制:list_items 表中的属性。对此有何想法或建议?我对 RoR 很陌生,所以我很感激有关此计划任何部分的任何反馈。谢谢!

【问题讨论】:

  • 是的,您似乎走在了正确的轨道上。例如,您可以添加ListItem#created_at 以了解用户何时将商品添加到他们的购物清单中。看起来你有你需要的东西(?)

标签: ruby-on-rails database jointable


【解决方案1】:

如何在这个表中创建和调用记录?

您基本上不使用 HABTM 关联类型。如果您想在连接表上存储比您需要使用标准的has_many(也可能是has_many :through)更多的状态,以便您可以操作底层连接模型。

因此,我从来都不是 HABTM 的粉丝,事实上,我有一些大型 Rails 应用程序正在生产中,而我自己从未使用过 HABTM。

【讨论】:

  • 啊,我明白了。在研究这一点时,我开始看到 HABTM 的一些局限性,你刚刚证实了我的怀疑。如果我使用连接模型(我们称之为:list_item),:inventory_item 和:list_item 将具有几乎相同的属性。为了实现我的目标,这是浪费,还是只是必要的重复?谢谢!
  • @settheline 我并没有真正遵循您的目标。转到我的个人资料并获取我的电子邮件,向我发送一封电子邮件,其中包含您的 inventory_items 和 shopping_lists 定义以及您尝试使用 list_item 实现的目标
  • 我无法从您的个人资料中找到您的电子邮件地址,因此我继续在编辑中发布了相关模型和我的最终目标。谢谢科迪。
猜你喜欢
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 2020-08-18
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
相关资源
最近更新 更多