ruby-on-rails - Rails中非规范化的抽象?

标签 ruby-on-rails denormalization

因此,我经常发现自己正在编写如下代码:

song.rb:

:before_save :cache_sortable_name

private

def cache_sortable_name
  return unless name_changed?
  self.sortable_name = name.sub(/^(the|a|an)\s+/i, '')
end


即,为了方便起见,我有一个sortable_name数据库列,该列保存非规范化数据,并且我希望在模型名称更改时填充它。

我希望能够将这种逻辑封装在这样的结构中

:cache_in_database :sortable_name do
  name.sub(/^(the|a|an)\s+/i, '')
end


或者其他的东西。是否存在?

最佳答案

因此,...您需要一个名为“ cache_in_database”的回调,该回调具有一个属性和一个块,并将该属性设置为每次保存之前该块的返回值。那正确吗?

我还没有听说过这样的事情,但这将是一个易于编写的插件。只需编写一个带有属性和块参数的cache_in_database类方法,创建一个进行赋值的proc或方法,然后将其添加到before_save链中即可。我的问题是,您是否经常这样做,以至于每次都节省一行代码左右就值得增加一点魔力。

关于ruby-on-rails - Rails中非规范化的抽象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1474649/

相关文章:

mysql - 存储数据库记录的数量是多余的吗?

ios - 属性越少,核心数据性能是否越好?

ruby-on-rails - PG错误不知道如何调试

mysql - 如何使用默认数据库进行用户登录,但在登录后使用另一个带有rails的数据库

ruby-on-rails - Rails 4 按虚拟属性排序

mysql - 数据库设计 - 我应该规范化还是非规范化(连接或复制)

mysql - 如何在 MySQL 中找到最流行的单词出现次数?

javascript - Ruby on Rails - 如何将换行符输入文本区域,以便在显示内容时也有换行符?

javascript - Rails 在 restful/resourceful Controller 中的 javascript 模板的最佳实践是什么?

sql - 我应该将贷款、采购和销售表非规范化为一张表吗?