我在DataMapper的以下模型:在DataMapper中,'有效'是保留名稱嗎?
class Student
include DataMapper::Resource
property :id, Serial
# <snip>
property :permissions, String, :accessor => :protected, :required => true, :default => 'standard'
property :valid, Boolean, :default => false, :required => true
# <snip>
end
需要 'DM-驗證'(1.1.0版本),開始我的末日的應用程序後,我收到以下消息:
/Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations.rb:81:in `valid?': wrong number of arguments (1 for 0) (ArgumentError) from /Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations.rb:81:in `save_self' from /Library/Ruby/Gems/1.8/gems/dm-core-1.1.0/lib/dm-core/resource.rb:1007:in `_save' from /Library/Ruby/Gems/1.8/gems/dm-core-1.1.0/lib/dm-core/resource.rb:1223:in `run_once' from /Library/Ruby/Gems/1.8/gems/dm-core-1.1.0/lib/dm-core/resource.rb:1006:in `_save' from /Library/Ruby/Gems/1.8/gems/dm-core-1.1.0/lib/dm-core/resource.rb:406:in `save' from /Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations.rb:69:in `save' from /Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations/support/context.rb:30:in `validation_context' from /Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations.rb:69:in `save' <snip>
我用於模型的'有效'名稱是保留字嗎?如果是這樣,我在哪裏可以找到這些詞。我試圖命名它爲'student_valid',但現在我只是很好奇這一點。
謝謝
哇,非常感謝你!有沒有一種方法,除了調用'instance.methods'(正如@ michael-papile在另一個答案中指出的)來查找所有這些方法,因爲調用'instance.methods'會給我所有我定義的聯合由DataMapper等其他對象定義的東西 – Eric 2011-03-28 16:54:00
由DM屬性保留的所有方法在DataMapper :: Property :: INVALID_NAMES常量中列出。 您發現的問題是由於Property僅驗證其名稱,如果是布爾屬性,它還應該檢查「#{name}?」這也將被定義並可能與已有的方法相沖突。 – solnic 2011-03-28 18:07:46
Just FYI - DataMapper 1.1.1將包含一個改進的屬性名稱驗證,如果您嘗試使用「valid」作爲名稱,將會引發異常。 – solnic 2011-04-01 12:50:39