數據庫有沒有辦法讓一行只允許一行(例如對於站點範圍的設置)?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
附加說明:在Rails 3中,應該使用'.errors [:base] <<「Msg」'而不是'.add_to_base(「Msg」)'([link](http://apidock.com/rails/) ActiveRecord/Errors/add_to_base)) –
如果有其他人想要使用它:這有一個新的Whatever在保存後無效,可以通過「||」修復它。 Whatever.first == self'在條件 –
這行中只有一列嗎?如果沒有,則通過遷移添加新列可能會過度。您至少可以讓該表包含「名稱」和「值」列,並通過名稱的唯一性進行驗證。
是的,但它可能,但正如我的評論中所寫,我想要利用AR的優勢 - 並且我可以將所有列添加一個遷移,這不是我認爲的壞事。我不明白如何製作名稱值列我的問題 - 但Unixmonkey已經指出我的解決方案 –
在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
對於其他誰來這裏,而不是'提高'使用以下內容: 'errors.add(:base,「如果Anything.count> 0',則只能創建該表的一行「) – rorykoehler
- 1. Rails/Activerecord數據庫字段時區
- 2. Rails 3.2 ActiveRecord數據庫字段問題
- 3. rails數據庫查詢導致activeRecord :: Relation
- 4. Rails ActiveRecord非數據庫屬性?
- 5. 現有數據庫的ActiveRecord關聯
- 6. 用ActiveRecord連接到現有的Postgresql數據庫沒有rails
- 7. 從現有的PostgreSQL數據庫ActiveRecord
- 8. 如何在Rails/ActiveRecord事務之外執行數據庫操作
- 9. Rails ActiveRecord數據剖析
- 10. 在Android的數據/數據/ .....只有一半的數據庫012只有一半的數據庫
- 11. 如何使用Rails ActiveRecord一次運行兩個數據庫命令?
- 12. MYSQL在mysql數據庫中輸出多行只有一行
- 13. CodeIgniter - 數據庫結果數組,但只有一行
- 14. WCF數據庫連接:只有一個數據庫連接
- 15. 的Rails 3:只能從數據庫
- 16. 的ActiveRecord :: NoDatabaseError:FATAL:數據庫 「gvpmahesh」 不存在
- 17. 數據庫鎖定:ActiveRecord + Heroku
- 18. ActiveRecord 3.1.0多個數據庫
- 19. 交換數據庫php activerecord
- 20. ActiveRecord :: AdapterNotSpecified - 數據庫未配置
- 21. Rails:設置一個私有值,所以它只能調用數據庫一次
- 22. 只有一行可以插入SQLite數據庫
- 23. 導入csv到數據庫只有一行
- 24. 只有最後一行插入到數據庫中
- 25. ActiveRecord數據庫連接的回調?
- 26. 如何讓同一數據庫行的多個ActiveRecord實例保持同步?
- 27. 將Activerecord數據庫遷移到Mongoid
- 28. ActiveRecord - 創建一個沒有導軌的數據庫
- 29. ActiveRecord :: StatementInvalid:Mysql2 :: Error:沒有選擇數據庫:SHOW TABLES LIKE'users'
- 30. 使用ActiveRecord將數據從MS Access數據庫導入MySQL數據庫
這不是一個數據庫,但是你可以用完成驗證類似。我不知道你爲什麼會。你期望*不小心插入額外的行嗎? – meagar
不,我只是想,如果我有一個應該包含站點設置的數據庫,並且我希望它只有一行,這也應該反映在代碼中。當然,也許使用配置文件而不是數據庫會是一個好主意 - 我決定採用這種方法,因爲ActiveRecord處理所有事情的方式,我不需要存儲配置文件的路徑,打開/關閉文件,地址讀取/寫入權限問題等。 –
如果您正在討論可在運行時配置的設置,那麼數據庫可能是適當的。但典型的Rails慣例是將配置存儲在'config /'目錄中,這就是它的用途。 – meagar