Am Montag, 3. Juli 2017 22:20:30 UTC+2 schrieb Sergio Cambra:
>
> ensure_not_nested must be a method in your app, I don't find it in 
> activescaffold code.
>

No, Sorry. ensure_not_nested is an Method in active_record. Please see the 
Stacktrace here:

[93, 102] in 
/usr/lib64/ruby/gems/2.2.0/gems/activerecord-5.1.2/lib/active_record/associations/has_many_through_association.rb
    93:         end
    94: 
    95:         def build_record(attributes)
    96: #          ensure_not_nested
    97: byebug
=>  98:           record = super(attributes)
    99: 
   100:           inverse = source_reflection.inverse_of
   101:           if inverse
   102:             if inverse.collection?
(byebug) where
--> #0  
ActiveRecord::Associations::HasManyThroughAssociation.build_record(attributes#Hash)
 
at 
/usr/lib64/ruby/gems/2.2.0/gems/activerecord-5.1.2/lib/active_record/associations/has_many_through_association.rb:98
    #1  
ActiveRecord::Associations::CollectionAssociation.build(attributes#Hash, 
&block#NilClass) at 
/usr/lib64/ruby/gems/2.2.0/gems/activerecord-5.1.2/lib/active_record/associations/collection_association.rb:99
    #2  block in ActiveRecord::AssociationRelation.block in 
build(*args#Array, &block#NilClass) at 
/usr/lib64/ruby/gems/2.2.0/gems/activerecord-5.1.2/lib/active_record/association_relation.rb:17
    #3  ActiveRecord::Relation.scoping at 
/usr/lib64/ruby/gems/2.2.0/gems/activerecord-5.1.2/lib/active_record/relation.rb:336
    #4  ActiveRecord::AssociationRelation.build(*args#Array, 
&block#NilClass) at 
/usr/lib64/ruby/gems/2.2.0/gems/activerecord-5.1.2/lib/active_record/association_relation.rb:17
    #5  ActiveScaffold::Actions::Core.new_model at 
/home/jan/src/cmdbfe/vendor/cache/active_scaffold-03dbc4ac900e/lib/active_scaffold/actions/core.rb:266

There you could see my "fix" to. Everything is working if i comment out the 
ensure_not_nested-Method, but i think that this is not the way to go :-)

You could avoid calling it when action name is index, or move out of 
> new_model method and add it as before_action only in needed actions.
> ActiveScaffold needs to build @record to display search form, so it you 
> need search form, new_model must work.
>


As my Application should mainly be used for reporting and searching, 
avoiding the search form is not really an option.

Thanks, Jan

 

>
> El lunes, 3 de julio de 2017, 22:17:02 (UTC+2), Jan Hebler escribió:
>>
>> Hi
>>
>> I have an rather complex Data-Model:
>>
>> class Node
>>   has_one :node2server
>>   has_one :server, :through => node2server
>>   has_many :errata, through => :server
>> end
>> class Node2server
>>   belongs_to :node
>>   belongs_to :server
>> end
>> class Server
>>   has_one :node2server
>>   has_one :node
>>   has_and_belongs_to_many :errata
>> end
>> class Erratum
>>   has_and_belongs_to_many :servers
>>   has_many :node2servers
>> end
>>
>> These are two Legacy-Applications (one CMDB and one Patchmanagement).
>>
>> It seems that the new_model Method is always called in the 
>> _list_with_header.html.erb:
>>
>>     7:       <% if active_scaffold_config.list.always_show_search %>
>>     8:       <% old_record, @record = @record, new_model %>
>>
>> which in turn calls build_record in 
>> active_record/associations/has_many_through_association.rb. Build_record 
>> call ensure_not_nested and this throws an 
>> HasManyThroughNestedAssociationsAreReadonly-Exception. How could i avoid 
>> this? I dont need writable Associations.
>>
>> Thanks, Jan
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails Gem" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/activescaffold.
For more options, visit https://groups.google.com/d/optout.

Reply via email to