Ruby on Rails v3.2.2を使用していますが、クラス/インスタンス属性を「保護」して、データベーステーブルの列の値を一方向にしか更新できないようにします。つまり、たとえば、2つのデータベーステーブルがあるとします。
table1
- full_name_column
table2
- name_column
- surname_column
関連するクラス/モデルに記載されているコールバックを使用してが更新されるtable1
ように管理し、そのコールバックを介してのみ値を更新できるようにしたいと思います。full_name_column
table2
full_name_column
言い換えれば、値が常にあることを確認する必要がありますtable2.full_name_column
"#{table1.name_column} #{table1.surname_column}"
そしてそれは別の値になることはできません。したがって、たとえば、を「直接」更新しようとするとtable1.full_name_column
、エラーのようなものが発生するはずです。もちろん、その値は読み取り可能でなければなりません。
出来ますか?この状況に対処するためにあなたは何をアドバイスしますか?
このアプローチの理由...
「profile」/「person」オブジェクトに関連する他の値が含まれているtable1
列でデータベース検索を実行することを計画しているため、このアプローチを使用したいと思います。table1
それらの検索をtable2
soに転送して、"#{table1.name_column} #{table1.surname_column}"
文字列を検索します。
したがって、簡単な方法は上記で説明したようにデータを非正規化することだと思いますが、そのデータを処理するための「珍しい」方法を実装する必要があります。
ところで:答えは、関連するプロセスを「解決」すること、または検索機能をより良い方法で処理するためのより良いアプローチを見つけることを意図する必要があります。