Module: AttrRemote::ClassMethods

Defined in:
lib/attr_remote.rb

Instance Method Summary collapse

Instance Method Details

#attr_remote(*remote_attrs) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/attr_remote.rb', line 7

def attr_remote(*remote_attrs)
  remote_class = "Remote#{self.to_s}"
  remote_instance_meth = remote_class.underscore
  remote_instance_id = remote_class.foreign_key

  class_eval "  # def remote_user\n  #   @remote_user ||= RemoteUser.find(self.remote_user_id) rescue nil\n  # end\n    def \#{remote_instance_meth}\n      @\#{remote_instance_meth} ||= \#{remote_class}.find(self.\#{remote_instance_id}) rescue nil\n    end\n  \n  # before_create :create_remote_user\n    before_create :create_\#{remote_instance_meth}\n  \n  # def create_remote_user\n  #   unless self.remote_user_id\n  #     remote_hash = {}\n  #     self.class.remote_attributes.each do |attr|\n  #       remote_hash[attr.to_sym] = self.send(attr.to_sym)\n  #     end\n  #     remote_hash[:validate_only] = true if validate_only\n  #     @remote_user = RemoteUser.create(remote_hash)\n  #     \n  #     unless @remote_user.valid?\n  #       @remote_user.errors.each do |attr, err|\n  #         errors.add(attr, err)\n  #       end\n  #       return false\n  #     else\n  #       self.remote_user_id = @remote_user.id\n  #     end\n  #   end\n  # end\n    def create_\#{remote_instance_meth}\n      unless self.\#{remote_instance_id}\n        remote_hash = {}\n        self.class.remote_attributes.each do |attr|\n          remote_hash[attr.to_sym] = self.send(attr.to_sym)\n        end\n        @\#{remote_instance_meth} = \#{remote_class}.create(remote_hash)\n        \n        unless @\#{remote_instance_meth}.valid?\n          @\#{remote_instance_meth}.errors.each do |attr, err|\n            errors.add(attr, err)\n          end\n          return false\n        else\n          self.\#{remote_instance_id} = @\#{remote_instance_meth}.id\n        end\n      end\n    end\n    private :create_\#{remote_instance_meth}\n    \n  # validate_on_create :validate_remote_user_on_create\n    validate_on_create :validate_\#{remote_instance_meth}_on_create\n    \n  # def validate_remote_user_on_create; end  \n    def validate_\#{remote_instance_meth}_on_create; end\n  remote_access\n\n  @remote_attributes = remote_attrs\n  remote_attributes.each do |attr|      \n    class_eval <<-remote_attribute\n      def \#{attr}                             # def username\n        remote_\#{attr} || ''                  #   remote_username || ''\n      end                                     # end\n\n      def remote_\#{attr}                      # def remote_username\n        if @\#{attr}                           #   if @username\n          @\#{attr}                            #     @username\n        elsif self.\#{remote_instance_meth}    #   elsif self.remote_user\n          @\#{attr} = self.                    #     @username = self.\n                     \#{remote_instance_meth}. #                 remote_user.\n                     \#{attr}                  #                 username\n        else                                  #   else\n          nil                                 #     nil\n        end                                   #   end\n      end                                     # end\n    \n      def \#{attr}=(attr_value)                # def username=(attr_value)\n        @\#{attr} = attr_value                 #   @username = attr_value\n      end                                     # end\n    remote_attribute\n  end\nend\n"

#remote_attributesObject



95
96
97
# File 'lib/attr_remote.rb', line 95

def remote_attributes
  @remote_attributes ||= []
end