このようにデータベースをセットアップします(STIを介して異なる種類のユーザーがいますが、「タイプ」は常にユーザーです):
class User
# fields
# :id
# :sender_id, :sender_type
# :recipient_id, :recipient_type
end
はがきモデル:
class Postcard < ActiveRecord::Base
belongs_to :owner, :class_name => User
belongs_to :recipient, :class_name => User
end
User モデルを次のようにセットアップしたいと思います。
class User < ActiveRecord::Base
has_many :postcards, :as => [:sender or :recipient] # this is not working
end
だから私は言うことができます:
user.postcards
出来ますか?
PS:私もこの道を試しました:
has_many :postcards, :finder_sql => Proc.new { "SELECT * FROM postcards WHERE postcards.owner_id=#{id} OR postcards.recipient_id=#{id}" }
しかし、 :finder_sql がまったく新しい SQL を再作成するため、スコープに行き詰まっていることに気付きました。
User.postcards.by_status('new').size