6

データベースで 1 行のみを許可する方法はありますか (サイト全体の設定など)。

4

3 に答える 3

8
class Whatever < ActiveRecord::Base
  validate :there_can_only_be_one

  private

  def there_can_only_be_one
    errors.add_to_base('There can only be one') if Whatever.count > 0
  end
end
于 2013-01-18T16:36:17.447 に答える
5

Rails 4 では:

class Anything < ActiveRecord::Base
  before_create :only_one_row

  private
  def only_one_row
    false if Anything.count > 0
  end
end

サイレントエラーは悪いことです。

class Anything < ActiveRecord::Base
  before_create :only_one_row

  private
  def only_one_row
    raise "You can create only one row of this table" if Anything.count > 0
  end
end
于 2015-10-06T14:26:00.833 に答える
2

この行には 1 つの列しかありませんか? そうでない場合、移行で新しい列を追加するのはやり過ぎかもしれません。少なくとも、このテーブルに「名前」列と「値」列を含めて、名前の一意性によって検証することができます。

于 2013-01-18T21:00:20.450 に答える