有没有办法让数据库只允许一行(例如,用于站点范围的设置)?
问问题
3225 次
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
这一行只有一列吗?如果不是,则通过迁移添加新列可能会过大。您至少可以使该表包含“名称”和“值”列,并通过名称的唯一性进行验证。
于 2013-01-18T21:00:20.450 回答