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.