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

时间:2010-07-30 20:30:26

标签: ruby-on-rails activerecord join

我定义了3个模型:

  • 调色板(有很多样本)
  • Swatch(有一种颜色)
  • 颜色(?)

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

@colors = @palette.swatches.colors

(色板当前存储了color_id,palette_id,以及一些相关信息,例如sort_order等)。

1 个答案:

答案 0 :(得分:0)

我认为这可以为您提供所需的结果。

# 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