0

Ruby の Datamapper でこれを実行したいと思います。

テーブルを作成してから、SQL ステートメント (raw) を実行します。私のDBは現在SQLiteです。http://datamapper.org/docs/callbacks.htmlをチェックアウトしましたが、テーブルの構築後にコールバックを追加することについては何もありません。すべてのテーブルが生成された後、制約を直接追加するか、テーブルの変更のようなものを追加する必要があるため、これを言っています。制約は、別のテーブルからの複数のキーに対する unique_index です。このようなもの:

class Score
belongs_to :pageant, :unique_index => :single_score
belongs_to :candidate, :unique_index => :single_score
belongs_to :category, :unique_index => :single_score
belongs_to :judge, :unique_index => :single_score
end

とにかく、私が実現したいのは、ページェント、候補者、カテゴリ、審査員の各組み合わせが一意であることです。別のテーブルにリンクされていない別のフィールドを含めない限り、:unique_index は機能しません。そこで、生の SQL を介して制約を追加することを考えました (ORM を使用していない場合はそうするでしょう)。

4

1 に答える 1

1

カスタム検証を作成することでこれを解決しました。愚かな私。

validates_with_method :check_uniqueness_of_score

def check_uniqueness_of_score
    !(Score.all(pageant_id: self.pageant_id, candidate_id: self.candidate_id, 
        category_id: self.category_id, judge_id: self.judge_id).count > 0)
end
于 2013-08-28T14:07:15.907 に答える