OK. Changed my code to the following, but still not getting an update of grid when I click the button (but yes on refresh of page):

    def after_update_save(record)
# ------------------------------------------------------------------------------------ # This is JUST a band-aid. It's here because there is an issue with has_one :through # either in ActiveScaffold or in Rails itself. Once that issue is fixed, this may
        #  be able to be removed
        #
            main_store_post = params[:record][:main_store].to_i || 0

            if !main_store_post.nil? && main_store_post > 0

                # Create a new SyncConfig Store Record
                scs = SyncConfigurationStore.new
                scs.StoreId = main_store_post
                scs.SyncConfigurationId = record.Id

                if scs.save # (and try to save it)

                    # Save the associated store as a Main Store
                    store = Store.find main_store_post
                    #store.MainStore = 1
                    if !store.update_attributes :MainStore => 1

                        # Roll back!
                        scs.delete
record.errors.add(:base, 'The Main Store could not be set.')
                    else

                        # Find any orphaned Main Stores
# ... We'll use a named_scope in order to save query power
                        Store.named_scope :parent_store,
:conditions => 'Store.MainStore = 1 AND auto_Store.Id NOT IN (SELECT DISTINCT(StoreId) FROM SyncConfigurationStores WHERE StoreId IS NOT NULL)' s = Store.parent_store # Going to get an array here...


# Make sure any exsting old Main Store(s) is(are) demoted...
                        if s.respond_to?(:each)

                            s.each { |s_|
                                s_.MainStore = 0
                                s_.save
                            }

# Also clear out any unused SyncConfigurationStores scs = SyncConfigurationStore.all :conditions => 'StoreId IS NULL'
                            scs.each { |scs_|
                                scs_.delete if scs_.respond_to?(:delete)
                            }
                        end

                        record.set_main_store_target(store)
                    end
                else
record.errors.add(:base, 'The Main Store could not be saved.')
                end
            end
        #
# ------------------------------------------------------------------------------------
    end

On 09/22/2010 08:52 AM, Sergio Cambra .:: entreCables S.L. ::. wrote:
On Miércoles, 22 de Septiembre de 2010 16:25:43 Michael Bahnmiller escribió:
yes, main_store *is* a has_one :through relationship.  What do you then
suggest?
I suggested to you changing after_update_save, but you can keep your current
code and add this line when store is saved:
record.set_main_store_target(store)

On 09/22/2010 08:19 AM, Sergio Cambra .:: entreCables S.L. ::. wrote:
On Miércoles, 22 de Septiembre de 2010 15:40:58 Michael Bahnmiller
escribió:
Here you go:

       def after_update_save(record)
           #
------------------------------------------------------------------------
--- --------- # This is JUST a band-aid.  It's here because there is an
issue with has_one :through
           #  either in ActiveScaffold or in Rails itself.  Once that
issue is fixed, this may
           #  be able to be removed
           #
               main_store_post = params[:record][:main_store].to_i || 0

               if !main_store_post.nil?&&   main_store_post>   0

                   # Create a new SyncConfig Store Record
                   scs = SyncConfigurationStore.new
                   scs.StoreId = main_store_post
                   scs.SyncConfigurationId = record.Id

                   if scs.save # (and try to save it)

                       # Save the associated store as a Main Store
                       store = Store.find main_store_post
                       store.MainStore = 1
                       if !store.save

                           # Roll back!
                           scs.delete
                           record.errors.add(:base, 'The Main Store could
not be set.')
                       else

                           # Find any orphaned Main Stores
                           # ... We'll use a named_scope in order to save
query power
                           Store.named_scope :parent_store,

                               :conditions =>   'Store.MainStore = 1 AND

Store.Id NOT IN (SELECT DISTINCT(StoreId) FROM SyncConfigurationStores
WHERE StoreId IS NOT NULL)'
                           s = Store.parent_store # Going to get an array
here...


                           # Make sure any exsting old Main Store(s)
is(are) demoted...
                           if s.respond_to?(:each)

                               s.each { |s_|
                                   s_.MainStore = 0
                                   s_.save
                               }

                               # Also clear out any unused
SyncConfigurationStores
                               scs = SyncConfigurationStore.all

:conditions =>   'StoreId IS NULL'

                               scs.each { |scs_|
                                   scs_.delete if
scs_.respond_to?(:delete) }
                           end
                       end
                   else
                       record.errors.add(:base, 'The Main Store could not
be saved.')
                   end
               end
           #
           #
------------------------------------------------------------------------
--- --------- end
If has_one :through association isn't named main_store, change it below.

Try with this:

def after_update_save(record)

#------------------------------------------------------------------------
# This is JUST a band-aid.  It's here because there is an issue with
has_one :through
    #  either in ActiveScaffold or in Rails itself.  Once that
issue is fixed, this may
    #  be able to be removed
    #
    main_store_post = params[:record][:main_store].to_i || 0

    if !main_store_post.nil?&&   main_store_post>   0
      main_store = Store.find main_store_post
      if !main_store.update_attributes :MainStore =>   1
        record.errors.add_to_base('The Main Store could not be set.')
      else
        # Create a new SyncConfig Store Record
        scs = SyncConfigurationStore.create :store =>   main_store,

:sync_configuration =>   record

        record.set_main_store_target = main_store
      end
    end
end

--
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/activescaffold?hl=en.

Reply via email to