如何使用attr_accessible创建工厂?

时间:2012-06-25 09:12:57

标签: ruby-on-rails ruby ruby-on-rails-3 rspec factory-bot

如何处理工厂和attr_accessible

我的例子:

# model
class SomeModel

  attr_accessible :name, full_name, other_name

end

#spec
require 'spec_helper'

describe "test" do
  it do
    create(:some_model, name: "test name", user: User.first) #factory
  end

end

#error
ruby(17122,0x12a055000) malloc: *** error for object 0x8: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

我认为错误是因为user_id属于attr_accessible属性。

3 个答案:

答案 0 :(得分:2)

好的,但无论如何,如果您使用关联定义工厂,它应该使用attr_protected分配记录

factory :some_model do |sm|

  sm.name "John"
  sm.full_name "John Smith"
  sm.other_name  "some other"

  sm.association :user, :factory => :user
end

而不是

describe "test" do
  it "should create models with associations" do
    Factory(:some_model, name: "test name", user: User.first) #factory
  end
end

答案 1 :(得分:0)

由于attr_accessible,这似乎与我得到的不同。 但是,您只需将:用户添加到attr_accessible

即可

答案 2 :(得分:0)

你不是只需要SomeModel吗?

belongs_to :user