在Rails4應用程序中,我想創建動態關聯。根據db值創建動態關聯
我有以下型號:
class Pilot < ActiveRecord::Base
has_many :cars
end
class Cars < ActiveRecord::Base
belongs_to :pilot
end
汽車有一個屬性的顏色,我想創造儘可能多的關聯可用顏色
舉例來說,如果我有1輛紅旗轎車,2個藍色轎車和1個綠色的車,我想在我的模式試點
has_many :red_cars
has_many :blue_cars
has_many :green_cars
的一點是,我不知道會有所回升的顏色。
是否可以實現它?
謝謝。
UPDATE
我想我大概可以這樣做
#untested. Written just now
Car.all.map(&:color).uniq.each do |color|
has_many "#{color}_cars".to_sym, -> { where(color: '#{color}') }, class_name: 'Car'
end
如果沒有好是可能的。
感謝您的答覆,但我的問題是一個比較複雜。我不知道哪種顏色的汽車有可能會在創建新記錄時被選中。 – macsig
我需要按顏色對汽車進行分組。所以我不能將顏色傳遞給控制器,但我需要將所有汽車按顏色分開。我想爲每種顏色都有一個關聯(或虛擬屬性)。 – macsig
如何定義顏色並在運行時添加新顏色?如果沒有,您可以使用'named scopes'和'group_by'完成所有工具。如果你真的想要關聯,爲什麼不循環一個顏色數組並在這個循環中動態地建立關聯? –