On Sunday, 21 July 2013 13:28:38 UTC-4, James Gray wrote:
>
> Hi all,
>
> In my controller I am doing the following to populate a nested form for a 
> has_many through association:
>
>     def new
>        @specification = Specification.new
>
>     Component.find_each.each do |component|
>       @specification.component_specifications.build(:component_id => 
> component.id)
>     end
>

 One note on this: I'm not sure what the find_each is getting you here. If 
there are enough records to make it important to find them in batches, 
building a new ComponentSpecification for each is going to be a bad idea.


The idea being whenever someone creates or edits a form, it will be 
> populated with all components at that time so that when they save those 
> components that specification will be associated with the newly created 
> specification. The problem I am having is I can't work out how to pass 
> component name to display in my form for the as yet nonexistent 
> component_specification as it is not accessible through the 
> ComponentSpecification model.
>
> My models:
>
> class Specification < ActiveRecord::Base
>   attr_accessible :description, :name, :component_specifications_attributes
>
>   validates :name, :presence => true, :uniqueness => true
>
>   has_many :component_specifications
>   has_many :components, :through => :component_specifications
>
>   accepts_nested_attributes_for :component_specifications, :allow_destroy 
> => true
> end
>
>
> class ComponentSpecification < ActiveRecord::Base
>   attr_accessible :note, :colour, :brand, :components
>
>   has_many :components
>

 This doesn't match the code you're using above - setting `component_id` 
isn't going to load this association. Is it possible this should be a 
belongs_to :component instead?

 

> class Component < ActiveRecord::Base
>   attr_accessible :description, :name
>
>   belongs_to :component_specifications
>

 Again, I think this is the wrong way round - I'm guessing your intended 
data model is that one Specification can have many Components, with 
ComponentSpecifications acting as a join table...

--Matt Jones

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/46d84917-ef35-4ed3-8a4f-e278b71c3f49%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to