0

我想在 Ruby 的 Datamapper 上执行此操作:

创建一个表,然后执行一条 SQL 语句(原始)。我现在的数据库是 SQLite。我检查了http://datamapper.org/docs/callbacks.html但在构建表后添加回调没有任何内容。我这样说是因为在生成所有表之后,我需要直接添加约束或更改表之类的东西。约束是来自另一个表的多个键的唯一索引。像这样的东西:

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 回答