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"
|