2011-09-14 11 views
1

私は2つのテーブル、製品、コードを持っています。商品にはcode_str列があります。 products.code_str列の最初の2文字を使用して、製品からコードを見つけることができます。私はこのような何かを試みた:外部キーが列ではなくSQL関数である可能性はありますか?

class Product < ActiveRecord::Base 
    belongs_to :code, foreign_key: "substring(products.code_str from 1 for 2)", primary_key: :number 
end 

しかし、それは動作しません。私は将来的にいくつかの熱心な読み込みを使いたいので、何かの代わりにbelongs_toの関連付けをすることを考えました。

アイデア?

答えて

0

同じ問題がありました。終わり

が追加さ:これは私が見つけた唯一の作業の代替である

+0

含ん使用した場合のクエリが遅い:

belongs_to :code, foreign_key: :code_str_id, primary_key: :number def code_str_id code_str[0..1] end 

長所:

短所を含めて各を見つけて動作します遠いしかし、パフォーマンスの影響はそれに値するものではありません。ありがとう! – Lonecat

関連する問題