factory_bot
factory_bot copied to clipboard
How do you do inline association attribute overrides when your association doesnt match the factory name?
The docs here use the worst example where the association happens to match the factory: https://github.com/thoughtbot/factory_bot/blob/main/GETTING_STARTED.md#overriding-attributes
factory :post do
# ...
author_last_name { "Writely" }
author { association :author, last_name: author_last_name }
end
What if "author" is called "previous_author" on the model, I've tried every variation of explicitly specify the factory and it doesn't work.
eg: previous_author factory: :author { ... } doesn't work, previous_author { ... factory: :author } doesn't work etc. Is this just not possible?
author { association :previous_author, factory: :author }, doesn't work either btw because it says "previous_author" key not found lol, not to mention if you have more than one author (previous_author and new_author) you cant have author and author specified twice.
I am assuming from your comments that your models have this structure:
class Author < ApplicationRecord
end
class Post < ApplicationRecord
belongs_to :previous_author, class_name: 'Author' # ...
end
In that case I believe
factory :post do
author_last_name { "Writely" }
previous_author { association :author, last_name: author_last_name }
end
ought to work.