10

モデルの階層構造がありますBoard(祖先の宝石を使用して実装されています)。

1 つのモデルといくつかのスコープの代わりに、Boardルート レベル要素 ( ancestrycolumn value is nil) とCategory残り ( ancestrycolumn value is not nil) の 2 つのモデルが必要です。彼らは同じテーブルを使用していますboards

どうすればこのようなことができますか?

4

2 に答える 2

12

set_table_nameRails のバージョンを使用して、またはそれself.table_nameに応じて、モデルのテーブルを明示的に定義できます。また、 を使用して、このモデルに対して作成されたすべてのクエリのデフォルト スコープを定義することもできますdefault_scope。そのため、両方の組み合わせが検索対象になるはずです。

class Category < AR:Base
  self.table_name = 'boards'
  default_scope where('boards.ancestry IS NOT NULL')
end
于 2013-08-19T14:21:38.247 に答える
6

カテゴリ モデルのテーブル名を指定して、デフォルトのスコープを生成できます。

class Category < ActiveRecord::Base
  self.table_name = "boards"
  default_scope where('boards.ancestry IS NOT NULL')
end

また、boards-Table を使用して両方のモデルと対話できる必要があります。

または、1 つのモデルにとどまり、特定のもののために 2 つのモジュールを追加します。それはあなたの好みに依存します。

于 2013-08-19T14:21:58.623 に答える