Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Blueprint for has_one associations #96

Open
ramontayag opened this Issue · 7 comments

5 participants

Ramon Tayag Chris Mear Antipattern Michael Economy Pat Allan
Ramon Tayag

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?

Chris Mear

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.

Ramon Tayag

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

Antipattern

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

Michael Economy

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 Allan

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

Profile.blueprint do
  user { object.user || User.make! }
end
Michael Economy

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

What ruby version and rails version are you using?

Pat Allan

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.