我试着使用.to_sym
,但没有运气。不知道这是否可能。
我想根据字符串参数更新活动记录中的属性:
def update_settings(type, value)
value = ActiveModel::Type::Boolean.new.cast(value)
case type
when 'sync_spotify'
update(sync_spotify: value)
when 'allowed_use_google_token'
update(allowed_use_google_token: value)
when 'allowed_use_spotify_token'
update(allowed_use_spotify_token: value)
when 'locale'
update(locale: value)
end
end
type
参数将始终与数据库中的列名匹配。有线索吗?这可能吗?
2条答案
按热度按时间cetgtptt1#
您可以定义一些允许的列表来检查更新属性是否在此列表中
然后动态更新
就像这样
当然,你可以引发一些自定义错误,或者向模型示例中添加错误,或者只是返回。但无论如何,在更新之前使用一些保护子句是值得的
vfhzx4xs2#
你能试着跟着吗?
您可以使用以下代码替换每种情况下的
update
方法调用: