例如,我可以使用名爲:key
的鍵聲明模型嗎?是否有任何字我不能用於一個密鑰?MongoMapper中是否有保留的鍵名?
0
A
回答
2
第一個問題很容易回答自己。打開irb並嘗試:
>> require 'mongo_mapper'
=> true
>> MongoMapper.database = 'test'
=> "test"
>> class Test
>> include MongoMapper::Document
>> key :key
>> end
=> #<MongoMapper::Plugins::Keys::Key:0x101fc7a90 @default_value=nil, @type=nil, @name="key", @options={}>
>> t = Test.new(:key => 'value')
=> #<Test _id: BSON::ObjectID('4c4dcced7123374587000001'), key: "value">
>> t.save
=> true
>> Test.all
=> [#<Test _id: BSON::ObjectID('4c4dcced7123374587000001'), key: "value">]
沒有錯誤?我猜key
是一個有效的鑰匙!
據我所知,您不應該使用您自己的數據的唯一密鑰是_id
和_type
。你可以使用,但它們會改變行爲。使用_id
將使您設置的任何內容成爲該對象的唯一標識。使用_type
將導致MongoMapper在從數據庫中返回對象時嘗試實例化您的_test
密鑰中的任何內容。
3
_id和_type。此外,任何可以創建與mongomapper doc/edoc實例方法相同的方法(如關聯等)的任何東西。
0
下面是John Nunemaker的答案的具體示例。
我發現硬盤的方式,下面的令牌在對象的實例代碼中引用,因此將使用相同的名稱(mongo_mapper /插件/ callbacks.b)的任意鍵衝突:
:destroy
:save
:create
:update
如果你定義
key :update, Integer
,那麼你就可以獲取,刪除,POST,但不能把因爲這將嘗試調用run_callbacks(:更新),已在該點成爲無稽之談。我不知道如何解決這個問題,這樣我可以在模型中創建一個名爲「update」的字段。任何人?
後續操作:看來執行實際更新的實例方法也被稱爲:update,所以它無助於消除這些回調的使用。相反,這僅僅是一個碰撞實例方法的情況,該方法在被用作方法之前會導致更多的錯誤,因爲它被用作回調類型FIRST。
相關問題
- 1. sortBy保留鍵名
- 2. 在模塊中,是否有保留的類名?
- 3. SQLite中是否有保留字?
- 4. 是否爲MovieClip名稱保留「_」前綴?
- 5. 是否有可能在Ruby中有一個名爲`class`或其他保留名稱的關鍵字參數?
- 6. 在MongoMapper中衝突關鍵名稱
- 7. 'INDEX'是否有效SQL ANSI ISO標準關鍵字/保留字?
- 8. Grails域名 - 保留關鍵字名稱
- 9. 是否在Google Chrome中「移除」保留的關鍵字?
- 10. 是否保留現有訂單
- 11. @property(只讀,保留)是否有意義?
- 12. 是否有理由保留SVN分支?
- 13. Mongomapper外鍵?
- 14. 「html」不是保留名稱
- 15. '別名'是保留字嗎?
- 16. 「login.ini」是保留名稱嗎?
- 17. 保留UITouch:是否允許?
- 18. NSUndoManager是否保留對象?
- 19. Viewstate是否保留歷史
- 20. [NSStream scheduleInRunLoop:forMode:]是否保留NSStream?
- 21. NSTimer是否自動保留?
- 22. 不[UIWindow addSubView:]是否保留?
- 23. control-b:是否保留?
- 24. [UIColor colorWithPatternImage:]是否保留UIImage?
- 25. 它是否是「javax」非法(保留)包名或不是?
- 26. 用jq保留鍵名換平JSON
- 27. 訪問的.Net場時,字段名是保留關鍵字
- 28. 選擇它的名稱是保留SQL關鍵字
- 29. TreeMap的不可修改視圖是否保留鍵排序?
- 30. 在Rails中,「名稱」是保留字嗎?