【发布时间】:2012-04-27 14:37:21
【问题描述】:
我正在使用 Ruby on Rails v3.2.2,我想“保护”一个类/实例属性,以便只能以一种方式更新数据库表列值。也就是说,例如,假设我有两个数据库表:
table1
- full_name_column
table2
- name_column
- surname_column
我管理table1,以便使用相关table2 类/模型中所述的回调更新full_name_column,我想确保可以更新full_name_column 值仅通过该回调。
换句话说,我应该确保 table2.full_name_column 值始终是
"#{table1.name_column} #{table1.surname_column}"
而且它不能是另一个值。因此,例如,如果我尝试“直接”更新table1.full_name_column,它应该会引发类似错误的信息。当然,该值必须是可读的。
有可能吗?您对处理这种情况有何建议?
采用这种方法的原因...
我想使用这种方法,因为我计划对 table1 列执行数据库搜索,其中 table1 包含与“profile”/“person”对象相关的其他值...否则,可能我必须进行一些 hack(可能是复杂的 hack)以将这些搜索定向到 table2,以便查找 "#{table1.name_column} #{table1.surname_column}" 字符串。
所以,我认为一种简单的方法是去规范化数据,如上所述,但它需要实现一种“不常见”的方法来处理该数据。 p>
顺便说一句:答案应该旨在“解决”相关流程或找到更好的方法来以更好的方式处理搜索功能。
【问题讨论】:
标签: ruby-on-rails ruby database ruby-on-rails-3.2 denormalization