一つのプロジェクトで通常の Realm と InMemory Realm を利用しています。プロジェクトで InMemory Realm のみを利用する場合は、以下のように Realm.setDefaultConfiguration(config) で InMemory Realm をデフォルトにセットすれば RealmObject() を継承した Model のプロパティを変更しても RealmMigrationNeededException は発生しません。

class RealmSampleApplication : Application() {
    lateinit var inMemoryRealm: Realm

    companion object {
        lateinit var instance: RealmSampleApplication
    }

    init {
        instance = this
    }

    override fun onCreate() {
        super.onCreate()

        Realm.init(this)
        val config: RealmConfiguration = RealmConfiguration.Builder()
                .name("inMemory.realm")
                .inMemory()
                .build()
        this.inMemoryRealm = Realm.getInstance(config)
        Realm.setDefaultConfiguration(config)
    }
}

open class InMemoryRealmObject(
    @PrimaryKey open var id: Int = 0
    // InMemory Realm のみ利用している場合は、プロパティを追加してもアプリ起動時にエラーにはならない
) : RealmObject()

一部の RealmObject を永続化したくなり、Disk に保存する通常の Realm と InMemory Realm を利用する為、以下のように実装を変更しました。

class RealmSampleApplication : Application() {
    lateinit var inMemoryRealm: Realm

    companion object {
        lateinit var instance: RealmSampleApplication
    }

    init {
        instance = this
    }

    override fun onCreate() {
        super.onCreate()

        Realm.init(this)
        val config: RealmConfiguration = RealmConfiguration.Builder()
                .name("inMemory.realm")
                .inMemory()
                .build()
        this.inMemoryRealm = Realm.getInstance(config)
        // Realm.setDefaultConfiguration(config) <- InMemory Realm をデフォルトにセットしない
    }
}

// inMemory.realm のみに保存したい
open class InMemoryRealmObject(
    @PrimaryKey open var id: Int = 0
) : RealmObject()

// default.realm のみに保存したい
open class DiskRealmObject(
    @PrimaryKey open var id: Int = 0
) : RealmObject()

このように実装すると default.realm と inMemory.realm のどちらにも InMemoryRealmObject と DiskRealmObject が定義されることになり InMemoryRealmObject のプロパティを変更すると RealmMigrationNeededException が発生します。

割合的に inMemory.realm を利用するケースが多く、通常の Realm に保存する RealmObject 、 InMemory Realm に保存する RealmObject を定義できたら嬉しいのですが、そのような実装は可能でしょうか。宜しくお願いします。