我試圖使用一些加載ActiveModel功能,但我無法使一切工作。我已經包含了我的課程文件和我正在運行的測試。 「:無法加載ActiveModel使用:: MassAssignmentSecurity
試驗與失敗未定義的方法`attr_accessible
我真的不知道爲什麼,因爲MassAssignmentSecurity將帶來的,它實際上是在運行。我也試圖包括所有的ActiveModel,但這也不起作用。如果我使用include或extend來引入MassAssignmentSecurity,似乎並不重要。
如果我通過在我測試的一些屬性在initialize行使「assign_attributes」,失敗也是如此。我對rails很新,所以我希望我只是錯過了一些非常簡單的東西。
TIA。
使用Rails 3.2.12
my_class.rb
class MyClass
include ActiveModel::MassAssignmentSecurity
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
extend ActiveSupport::Callbacks
attr_accessible :persisted, :creds
def initialize(attributes = nil, options = {})
@persisted = false
assign_attributes(attributes, options) if attributes
yield self if block_given?
end
end
my_class_spec.rb
require 'spec_helper'
describe MyClass do
before do
@testcase = MyClass.new
end
subject { @testcase }
it_should_behave_like "ActiveModel"
it { MyClass.should include(ActiveModel::MassAssignmentSecurity) }
it { should respond_to(:persisted) }
end
支持/ active_model.rb
shared_examples_for "ActiveModel" do
include ActiveModel::Lint::Tests
# to_s is to support ruby-1.9
ActiveModel::Lint::Tests.public_instance_methods.map{|m| m.to_s}.grep(/^test/).each do |m|
example m.gsub('_',' ') do
send m
end
end
def model
subject
end
end