Yo *_*dke 6 mysql ruby-on-rails rails-activerecord
有没有办法使数据库只允许一行(例如,对于站点范围的设置)?
class Whatever < ActiveRecord::Base
validates :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
Run Code Online (Sandbox Code Playgroud)
在 Rails 4 中:
class Anything < ActiveRecord::Base
before_create :only_one_row
private
def only_one_row
false if Anything.count > 0
end
end
Run Code Online (Sandbox Code Playgroud)
无声的错误是不好的,那么
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
Run Code Online (Sandbox Code Playgroud)