DeviceState「アクティブ」、「オフライン」、「オンライン」などの状態を含むモデルがあります。
Devicewhich belongs_totoという別のモデルがありDeviceStateます。
@device.active?デバイス モデルでやなどのメソッドを使用する@device.offline?ために、動的メソッドを次のように定義しました。
DeviceState.all.each do |method|
define_method((method.name + "?").to_sym) do
self.device_state.name == method.name
end
end
私の問題は、モデルでテストを作成しようとすると、テスト環境の起動中にモデルがデータベースに取り込まれていないDeviceため、動的メソッドが作成されないことです。DeviceStateだからファクトリーガールでデータを作ってDeviceStateからでは遅い。
DeviceState私が試した解決策の 1 つは、 inをシードすることですspec_helperが、これは最初のテストでは機能しましたが、データベース クリーナーがデータを削除したため、残りのすべてのテストでは機能しませんでした。
これらの動的に定義されたメソッドを克服する最善の方法は何でしょうか?