yes, main_store *is* a has_one :through relationship. What do you then suggest?

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