【问题标题】:A Model That Contains Other Models包含其他模型的模型
【发布时间】:2015-06-19 00:20:59
【问题描述】:

我的术语可能有点不对劲,但我会尽可能多地解释这一点。

我目前正在开发一个包含不同类型产品的应用程序:西装、鞋子、衬衫。这些都是没有相似继承点的独立模型。拥有集合的用户应该能够将其中的一个或多个添加到集合中。

我正在考虑使用 has_many :through,但这似乎不是很优雅。我必须为每个模型创建 3 个类似的连接表(或者我认为)。有更好的解决方案吗?如果解决方案需要我按原样修改结构,我现在可以使用其他解决方案吗?

提前谢谢你。

【问题讨论】:

    标签: ruby-on-rails activerecord rails-activerecord


    【解决方案1】:

    如果用户拥有一个收藏,那么西装、鞋子和衬衫必须属于用户。此外,您需要使用嵌套属性。所以,你会有类似的东西:

    user.rb

    has_many :suits
    has_many :shoes
    has_many :shirts
    accepts_nested_attributes_for :suits
    accepts_nested_attributes_for :shoes
    accepts_nested_attributes_for :shirts
    

    衬衫

    belongs_to :user
    

    然后,您可以使用此表单代码添加产品:

    form_for @user do |f|
     f.fields_for :shoes, @user.shoes.new do |builder|
      builder.text_field :price
      ...
     end
     f.fields_for :suits, @user.suits.new do |builder|
      builder.text_field :price
      ...
     end
    end
    

    【讨论】:

    • 啊,好的。那么,我应该跳过为它们创建一个属于用户的容器吗?它只是看起来有点脏,但我对你的方法感觉好多了。
    • 我觉得它需要一个不同的控制器,就像它会使用户控制器有点混乱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2018-09-04
    • 2020-07-03
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多