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