FOREIGN_KEYカスタムとを通じて、私はモデルの次のセットを持っている:Cardstock.last.palette_colors
を呼び出すRailsのhas_manyの:
class Cardstock < ActiveRecord::Base
has_many :color_matches, :primary_key => :hex, :foreign_key => :hex
has_many :palette_colors, :through => :color_matches
end
class ColorMatch < ActiveRecord::Base
belongs_to :palette_color
has_many :cardstocks, :foreign_key => :hex, :primary_key => :hex
end
class PaletteColor < ActiveRecord::Base
has_many :color_matches
has_many :cardstocks, :through => :color_matches
end
は、次のエラーが得られます。
ActiveRecord::StatementInvalid: PGError: ERROR: operator does not exist: character varying = integer
LINE 1: ...".palette_color_id WHERE (("color_matches".hex = 66)) OR...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT "palette_colors".* FROM "palette_colors" INNER JOIN "color_matches" ON "palette_colors".id = "color_matches".palette_color_id WHERE (("color_matches".hex = 66)) ORDER BY name ASC
これは、ActiveRecordのは、生成したクエリを使用していることを私に示してカードストックのID(66
)ここで、カードストックのヘックス(bbbbaf
)を使用する必要があります。どこかで、hex
列を使用してcardstocks
とcolor_matches
を結合するには、ActiveRecordに指定する必要があります。 ActiveRecordはこれをサポートしていますか?
ところで、これはRails 2.3.xです。 –