モデルBoard
(祖先宝石を使用して実装されています)の階層構造を持っています。ルートレベルの要素(ancestry
列の値がnil
ある)についてBoard
、残り(ancestry
列の値がnot nil
である)のためのCategory
: 1つのテーブル - 2つのモデル
代わりの一つのモデルといくつかのスコープが、私は2つのモデルを持っているしたいと思い
。彼らは同じテーブルboards
を使用しています。
どうすればいいですか?
モデルBoard
(祖先宝石を使用して実装されています)の階層構造を持っています。ルートレベルの要素(ancestry
列の値がnil
ある)についてBoard
、残り(ancestry
列の値がnot nil
である)のためのCategory
: 1つのテーブル - 2つのモデル
代わりの一つのモデルといくつかのスコープが、私は2つのモデルを持っているしたいと思い
。彼らは同じテーブルboards
を使用しています。
どうすればいいですか?
レールのバージョンによっては、set_table_name
またはself.table_name
を使用してモデルの表を明示的に定義できます。また、あなたはdefault_scope
を使用して、このモデルのために作られたすべてのクエリのデフォルトのスコープを定義することができ、その両方の組み合わせは、あなたが探しているものでなければなりません:
class Category < AR:Base
self.table_name = 'boards'
default_scope where('boards.ancestry IS NOT NULL')
end
あなたは、カテゴリモデルのテーブル名を指定して生成することができデフォルトのスコープ:
class Category < ActiveRecord::Base
self.table_name = "boards"
default_scope where('boards.ancestry IS NOT NULL')
end
そして、あなたは、両方のモデルは、ボード・テーブルをウィットと対話することができるはずです。
1つのモデルにとどまり、特定のもの用に2つのモジュールを追加します。それはあなたの好みによって異なります。
うわー、まったく同じ答え、ハハハ、面白かったです。 – MurifoX