notahat / machinist

Fixtures aren't fun. Machinist is.
MIT License
1.12k stars 134 forks source link

Blueprint for has_one associations #96

Open ramontayag opened 13 years ago

ramontayag commented 13 years ago

I tried making a blueprint for a has one association (where User has_one Profile:

User.blueprint(:with_profile) do
  profile # I also tried profile(1)
end

Profile.blueprint do
  user
end

But they don't seem to work. I can't find any info regarding this either. Is this thing possible?

chrismear commented 13 years ago

In Machinist 1, only belongs_to associations can be filled in like this; for has_one/has_many associations, you need write a manual helper. See the section 'Other Associations' in the README: https://github.com/notahat/machinist/blob/1.0-maintenance/README.markdown

I believe the plan is for Machinist 2 to support has_one/has_many associations using this syntax.

ramontayag commented 13 years ago

Sorry - I forgot to mention that I am using machinist 2.

Antipattern commented 12 years ago

Using 2.0.0.beta I have the same problem with belongs_to

using an explicit make! fixes the problem

So try: Profile.blueprint do user { User.make!} end

michaeleconomy commented 12 years ago

Antipattern's solution works for us, but when not when using make from an association:

Like:

i = recipe.ingredients.make!

i.recipe_id will != recipe.id

(rails 3.1.3, machinist 2)

pat commented 12 years ago

To have makes via associations work, I usually write my blueprints like so:

Profile.blueprint do
  user { object.user || User.make! }
end
michaeleconomy commented 12 years ago

I tried that freelancing god, and it didn't work!

What ruby version and rails version are you using?

pat commented 12 years ago

Generally using MRI 1.9 and Rails 3.x - I've taken this approach in a few apps.