2016-06-27 7 views
2

は、いずれかがありますモデルにバージョン管理を追加して、アクティブなレコードの検証を特定のバージョンに書き込むことができます。APIのバージョン

答えて

1

はそのまま古いユーザーを維持し、新規ユーザーをサブクラス化。 ActiveRecordは単一テーブル継承をサポートしているため、データベースには新しいユーザーである古いユーザーを区別するためのtypeという新しい列があります。そして、あなたの検証は新しいユーザーにのみ行われます。別のクラスとして、それらを維持

は、古いユーザーは携帯電話の番号を持っていないことを、あなたのビジネスモデルを反映しています。 mobile_number`だけのために:解決策の一つである、しかし、私は何を期待していていることは、 `validates_presense_ofを持つ例えば、検証を言及するのではなく、テーブルに列を追加するためのアクティブなモデルにバージョン管理を追加するのいずれかの方法があるかもしれ

+0

2番目のバージョン。 –

+0

もし1 *バージョン*あなたは[ 'case'](http://ruby-doc.com/docs/ProgrammingRuby/html/tut_expressions.html#をあなたのコード(' if'に条件を置くかのいずれか、他のバージョンとは異なる振る舞いS5)ステートメント)、または相違点を表現するために継承メソッドと多相メソッドを使用します。コードは、古いユーザーを想定していたときに、すべての新しいユーザーが使用することができますので、私は新しいユーザー**は、[リスコフの置換原則](https://en.wikipedia.org/wiki/Liskov_substitution_principle)あたり**古いユーザーであると信じています。 – wigy

関連する問題