0

私のモデルには、 、、または のbarいずれかの文字列フィールド があります。has_ancestry と act_as_list を使用します。リストの範囲を (1) 先祖、および (2) に限定したいのですが、同じリストに入れたいのですが、別のリストに入れたいのです。つまり、isまたはthen の場合は Foo がアクティブであり、1 つのリスト スコープ内にある必要があり、 isの場合は非アクティブであり、個別にリストする必要があります。abcbarabcbarabbarc

モデルは次のようになると思います。

class Foo < ActiveRecord::Base
  scope :active, -> { where.not(bar: "c") }

  has_ancestry
  acts_as_list scope: [:ancestry, ???]
end

問題は、acts_as_list を取得して bar の 2 つの値を一緒にスコープするにはどうすればよいかということです。

(たとえばscope: 'ancestry = \'#{ancestry}\' AND bar = \'bar\''、bar に基づいて 2 つではなく 3 つの異なるリストが得られるようなものです。)

この権利を説明していない場合はお知らせください。私はグーグルをかなり調べましたが、答えが見つかりませんでした。ありがとう!


Rails 4 と Ruby 2。ancestry と act_as_list の最新バージョンですが、それは柔軟です。

と同等の別のデータベース列を追加することを検討したことを付け加える必要がありますがbar == "c"、別の解決策を望んでいます。

4

1 に答える 1