代码之家  ›  专栏  ›  技术社区  ›  meleyal

如何使用activerecord/rails在3个表之间建立关联?

  •  0
  • meleyal  · 技术社区  · 14 年前

    我定义了3个模型:

    • 调色板(有许多样例)
    • 样本(有一种颜色)

    如何定义表/关联,以便从Palette对象收集所有颜色,例如:

    @colors = @palette.swatches.colors
    

    (样例当前存储颜色标识、调色板标识以及一些相关信息,如排序顺序等)

    1 回复  |  直到 14 年前
        1
  •  0
  •   Jeffrey D. Hoffman    14 年前

    我想这会让你得到你想要的结果。

    # palette table:
    # id INT
    class Palette < ActiveRecord::Base
        has_many :swatches
        has_many :colors, :through => :swatches
    end
    
    # swatch table:
    # id INT
    # palette_id INT
    # color_id INT
    class Swatch < ActiveRecord::Base
        belongs_to :palette
        belongs_to :color
    end
    

    通过使用 :through 参数,则可以直接访问调色板的颜色。

    @colors = @palette.colors