mobility - 设置为 null-sy 值时,表后端翻译自毁
问题描述
不确定这是错误、功能、丢失的文档还是错误的配置,但是当我将所有翻译属性设置为 null-sy 值时,翻译记录会自毁。
我有如下表后端移动设置:
schema.rb
create table "base_model", force: :cascade do |t|
t.boolean "is_animal"
t.boolean "is_vehicle"
...
end
create table "base_model_translation", force: :cascade do |t|
t.bigint "base_model_id", null: false
t.string "locale", null: false
t.boolean "is_animal_translation"
t.boolean "is_vehicle_translation"
...
end
base_model.rb
class BaseModel < ApplicationRecord
extend Mobility
has_many :translations,
class_name: "BaseModelTranslations",
autosave: true,
dependent: :destroy
translates :is_animal_translation
translates :is_vehicle_translation
end
base_model_translation.rb
class BaseModelTranslation < ApplicationRecord
belongs_to :base_model,
touch: true,
inverse_of: :translations
end
在 Rails 控制台上:
base_model = BaseModel.last
base_model.reload.translations # => []
# SET TO NULLSY
base_model.is_animal_translation = true
base_model.save
base_model.reload.translations
# => [
# <#BaseModel::Translation
# id: 1,
# is_animal_translation: true,
# is_vehicle_translation: nil,
# ...>]
base_model.is_animal_translation = false
base_model.save
base_model.reload.translations # => []
# SET TO PARTIAL NULLSY THEN FULL NULLSY
base_model.is_animal_translation = true
base_model.is_vehicle_translation = true
base_model.save
base_model.reload.translations
# => [
# <#BaseModel::Translation
# id: 1,
# is_animal_translation: true,
# is_vehicle_translation: true,
# ...>]
base_model.is_animal_translation = false
base_model.save
base_model.reload.translations
# => [
# <#BaseModel::Translation
# id: 1,
# is_animal_translation: false,
# is_vehicle_translation: true,
# ...>]
base_model.is_animal_translation = false
base_model.save
base_model.reload.translations # => []
这是一种预期的行为吗,如果是这样,是否有绕过的方法?
编辑:看起来这是一种预期的行为(https://github.com/shioyama/mobility/blob/3cbeaeec8ef0a6d22ee05229141cd2b2bb33b17f/lib/mobility/backends/active_record/table.rb#L306),有没有绕过这个?
解决方案
推荐阅读
- python - cv2.imread() 返回 NoneType
- statistics - Cytoscape 可以计算中心性吗?
- c - 从编译器之间的 printf() 获得一致的输出
- jquery - Jquery alert() 有效,但 addclass() 或其他任何东西无效
- r - R:计算 dplyr 中分组值内的费率
- html - css:从居中的弹性项目转换为固定以允许溢出-x?
- xml - Kotlin:你如何从 XML 中读取非文本的值?
- java - 为什么选择 System.out.println(new String(copyTo))?
- javascript - 如何在 Javascript 中将 2 个数组合并为 1 个数组?
- android - 当约束布局在 ScrollView 中时如何修复底部导航栏?