【发布时间】:2012-10-10 19:17:45
【问题描述】:
我已经实现了 cancan,并希望按照cancan wiki 的建议测试能力。我试图复制“用户只能破坏他拥有的项目”。
spec/models/ability_spec.rb:
require "cancan/matchers"
require 'spec_helper'
describe Ability do
context "user is investigator" do
it "user can only destroy projects which he owns" do
user = FactoryGirl.create(:user)
ability = Ability.new(user)
ability.should be_able_to(:destroy, Project.new(:user => user))
end
end
end
但是我得到:
ActiveModel::MassAssignmentSecurity::Error:
Can't mass-assign protected attributes: user
型号:
class User < ActiveRecord::Base
has_many :projects, dependent: :destroy
devise :database_authenticatable, etc...
attr_accessible :email, :password, :password_confirmation, :remember_me, :locale
validates :role, :presence => true
end
class Project < ActiveRecord::Base
belongs_to :user
end
工厂:
FactoryGirl.define do
factory :user do |f|
f.email { Faker::Internet.email }
f.password "secret"
f.role 1
end
end
我明白为什么会出现这个错误,并且已经尝试了各种方法来解决它,但是对工厂的了解还不够好,无法破解它。你能帮忙吗?
【问题讨论】:
标签: ruby-on-rails rspec factory-bot cancan