我認爲包括ActiveModel
將允許您以與ActiveRecord
相同的方式處理對象,而不必將其保存到數據庫中。我知道ActiveModel::Model
允許你做驗證等,但是不會僅僅包括ActiveModel
也這樣做?在Rails 4中包含ActiveModel和ActiveModel :: Model有什麼區別?
1
A
回答
2
不,這是不一樣的。包括ActiveModel
未向您提供驗證方法。 ActiveModel::Model
給出的方法之一是persisted?
,默認返回false
。您可以在Rails的控制檯測試驗證這一點:
class Test; include ActiveModel; end; Test.new.persisted?
# NoMethodError: undefined method `persisted?' for #<Test:0x007f84ddd6d620>
class Test; include ActiveModel::Model; end; Test.new.persisted?
# false
的ActiveModel
模塊只定義自動加載的子模塊(check the source)提供一些參考。它實際上並沒有將任何方法混入你的課堂。
,另一方面ActiveModel::Model
做一些事情,當你有它:
def self.included(base)
base.class_eval do
extend ActiveModel::Naming
extend ActiveModel::Translation
include ActiveModel::Validations
include ActiveModel::Conversion
end
end
當你包括ActiveModel::Model
,該included
方法被調用,其中包括ActiveModel::Naming
,ActiveModel::Validations
等。這些都混合方法到類。另請參閱source的ActiveModel::Model
。
相關問題
- 1. ActiveModel :: ForbiddenAttributesError與Rails 4
- 2. 在ActiveModel :: Serializer中包含current_user
- 3. 不能包含ActiveModel ::模型
- 4. Rails 4類包括ActiveModel :: Model,但未定義'all method
- 5. ::加載ActiveModel Rails的ForbiddenAttributesError 4
- 6. ActiveModel :: ForbiddenAttributesError(ActiveModel :: ForbiddenAttributesError)
- 7. ActiveModel :: AttributeError rails 3
- 8. Rails 3和Rails 4有什麼區別?
- 9. OrdersController中的Rails 4 ActiveModel :: MissingAttributeError#create
- 10. Model :: ConstInterp和Model :: Eval有什麼區別?
- 11. assign_attributes和ActiveModel :: ForbiddenAttributesError
- 12. ActiveModel vs ActionView在Rails中
- 13. Rails 4未定義公共方法ActiveModel
- 14. 'ruby script/destroy model'和'rails destroy model'有什麼區別?
- 15. 軌道4加載ActiveModel :: ForbiddenAttributesError
- 16. RSpec和ActiveModel
- 17. 新使用Rails 4 - ::加載ActiveModel ForbiddenAttributesError
- 18. Rails的加載ActiveModel 3:不能加載ActiveModel包括::型號直接
- 19. Rails 4.2 + ActiveModel Serializer 0.8.3
- 20. 爲什麼ActiveModel :: ForbiddenAttributesError錯誤?
- 21. ActionMailer和ActiveModel
- 22. @Model和@ViewData.Model有什麼區別?
- 23. ActiveModel :: ForbiddenAttributes與Rails引擎
- 24. Rails ActiveModel屬性類型
- 25. 將多個參數傳遞給ActiveModel :: Model
- 26. 4和@ 4有什麼區別?
- 27. Rails 3和fields_for with activemodel(tableless)object
- 28. 什麼是使before_validation等工作在ActiveModel
- 29. ActiveModel Rails客戶端驗證
- 30. Rails,ActiveModel模型關聯?
感謝您解決這個問題。一個後續問題:什麼時候它實際上只與ActiveModel相關? – Magne
我想不出任何場景,因爲它的主要目的只是爲加載設置一些引用。 – fivedigit