- 1
- 2
- 3
- 4
- 5
- 6
- 7
before_create :build_client_info_attributes
def build_client_info_attributes
CLIENT_INFO_ATTRIBUTES.each do |attr|
eval("def #{attr}();return read_attribute(:#{attr}).present? ? read_attribute(:#{attr}) : subject.try(:owner).try(:#{attr});end;")
end
eval("def country_id;read_attribute(:country).present? ? read_attribute(:country) : subject.try(:owner).try(:country).try(:id);end;")
end
bot 18.04.2016 21:20 # 0
guest 19.04.2016 01:00 # 0
maxk 19.04.2016 06:05 # 0
Стоит отметить так же, что все это дело генерируется в каллбеке before create, перед созданием объекта в БД. При выборки записи из БД генерация этих методов не происходит. В руби есть стандартная практика, написания статичиских метод, которые генерируют некий код (attr_accessor например), именно ее и нужно было приминить в данном случае