Module: GoogleSpreadsheets::Enhanced::Syncing::ClassMethods
- Defined in:
- lib/google_spreadsheets/enhanced/syncing.rb
Instance Method Summary collapse
-
#sync_with(rows_name, options) ⇒ Object
Example class User < ActiveRecord::Base include GoogleSpreadsheets::Enhanced::Syncing sync_with :user_rows, spreadsheet_id: ‘xxxx’, worksheet_title: ‘users’ after_commit :sync_user_row.
Instance Method Details
#sync_with(rows_name, options) ⇒ Object
Example
class User < ActiveRecord::Base
include GoogleSpreadsheets::Enhanced::Syncing
sync_with :user_rows, spreadsheet_id: 'xxxx',
worksheet_title: 'users'
after_commit :sync_user_row
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/google_spreadsheets/enhanced/syncing.rb', line 21 def sync_with(rows_name, ) .assert_valid_keys(:spreadsheet_id, :worksheet_title, :class_name, :assigner, :include_blank, :ignore_blank_id) opts = .dup spreadsheet_id = opts.delete(:spreadsheet_id) worksheet_title = opts.delete(:worksheet_title) || rows_name.to_s class_name = opts.delete(:class_name) || rows_name.to_s.classify synchronizer = Synchronizer.new(self, class_name.safe_constantize, spreadsheet_id, worksheet_title, opts) self.synchronizers = self.synchronizers.merge(rows_name => synchronizer) # not share parent class attrs # rows accessor define_singleton_method(rows_name) do synchronizer = self.synchronizers[rows_name] synchronizer.all_rows end # inbound sync all (import) define_singleton_method("sync_with_#{rows_name}") do synchronizer = self.synchronizers[rows_name] synchronizer.sync_with_rows end # outbound sync one (export) define_method("sync_#{rows_name.to_s.singularize}") do synchronizer = self.class.synchronizers[rows_name] synchronizer.sync_row(self) end end |