Я пытаюсь использовать некоторые функции в ActiveModel, но у меня возникают проблемы с тем, чтобы все работало. Я включил мой файл класса и тест, который я запускаю.Невозможно использовать ActiveModel :: MassAssignmentSecurity
Тест терпит неудачу с: «: неопределенный метод` attr_accessible
Я действительно не знаю, почему, так как MassAssignmentSecurity принесет, что и это на самом деле работает. Я также пытался включить все ActiveModel, но это тоже не работает. Кажется, не имеет значения, если я использую include или расширяю, чтобы вызвать MassAssignmentSecurity.
Если я передаю некоторые атрибуты в своем тесте, чтобы реализовать «assign_attributes» в инициализации, это тоже не сработает. Я довольно новичок в рельсах, поэтому я надеюсь, что я просто пропустил что-то очень простое.
TIA.
Использование рельсов 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