2016-08-22 8 views
0

2つのタイプの:booleanカラムが必要です.XとY、つまりYがXに部分的に依存するとしましょう.Xが真の場合、Yは真または偽のいずれかですが、Xが偽の場合Yは偽でなければなりません。これは可能ですか?テーブルの列は、部分的に別の列に依存しますか?

class AddPrivacyColumnsToPosts < ActiveRecord::Migration 
    def change 
    add_column("posts", "public", :boolean, :default => true) 
    add_column("posts", "collectable", :boolean, :default => true) 
    end 
end 
publicがXで

、及びcollectable、すなわち唯一の公共のポストを収集することができ、Yです。投稿がプライベートに設定されている場合(publicがfalseの場合)、collectableは自動的にfalseに設定されます。

+0

にコールバック節約になります。これを達成する方法はたくさんありますが、あなたが探しているものがわからないのです。あなたが取り組んでいるコードはありますか? – kcdragon

+0

@kcdragonマイグレーションファイルのコードで質問を更新しました – Arif

+0

これを行う方法をお尋ねしますか? – kcdragon

答えて

2

私は前に追加はい、これが可能であるポスト

before_save :set_collectable 

def set_collectable 
    if !public? 
    self.collectable = false 
    end 
end 
+0

ありがとう!あなたが言われて以来、これを行うにはいくつかの方法があります。ただ好奇心から...それを行う他の方法は何ですか? – Arif

+1

データベーストリガーを追加することはできますが、これらはRailsではあまり使われません。 wisperやobserverのようなリスナーを使って、コールバックを直接使うのではなく、collectableを設定することもできます。しかし、私は答えにあるものはあなたの最善の策だと思う – kcdragon

関連する問題