FactoryGirl 中的 _id 属性发生了什么?

What's happen that _id attribute in FactoryGirl?

我对这种行为感到惊讶。

也许吧。 https://github.com/thoughtbot/factory_girl/blob/8a65569f102ac2593e7c73bd029d5072e4641af8/lib/factory_girl/aliases.rb 是可能会影响。但我不知道。

为什么厂妹不见了values( @rank )

样本

require 'factory_girl'
class Book
  attr_accessor :rank, :rank_id
end
FactoryGirl.define do
  factory :book do
    rank 3
  end
end
puts FactoryGirl.build(:book).inspect
    #=> #<Book:0x007fb748207770 @rank=3>
puts FactoryGirl.build(:book, rank_id: 10).inspect
    #=> #<Book:0x007fb7481dd6a0 @rank_id=10> (missing @rank)
puts FactoryGirl.build(:book, rank: 1).inspect
    #=> #<Book:0x007fb7481ef6e8 @rank=1>
puts FactoryGirl.build(:book, rank: 2, rank_id: 10).inspect
    #=> #<Book:0x007fb7481d60f8 @rank_id=10> (missing @rank)

我认为这对 ActiveRecord 可能很重要。

如果你不想要这种行为,你可以做一些猴子修补:

module FactoryGirl
  self.aliases = []
end