0

私が取り組んでいるアプリには、「Before Photos」と「After Photos」が必要です。現在、データベースには 2 つの個別のテーブルがあります。これら2つをマージすることを考えているので、次のようになります。

create_table :photos do |t|
    t.string  :image
    t.string  :photographable_type
end

そして、私のモデルにこのようなものがあるかもしれません

has_many :before_photos, class_name: 'Photo', as: :photographable
has_many :after_photos, class_name: 'Photo', as: :photographable

これまでポリモーフィック アソシエーションを使用する必要がなかったので、少し混乱しています。誰かがこれを行う正しい方法について簡単に説明してくれませんか?

前もって感謝します

4

1 に答える 1

0

has_manyそのようなポリモーフィックな関連付けの代わりに条件付きを使用できると思います。

class PhotoOwner < ActiveRecord::Base
  has_many :before_photos, -> { where some_field: true }, class_name: 'Photo'
  has_many :after_photos, -> { where some_field: false }, class_name: 'Photo'
end

ここから入手してください: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html、セクション「クエリのカスタマイズ」

于 2013-10-26T08:14:51.560 に答える