当有不同的数据进入时(从远程服务器获取),我会覆盖一些用户数据库数据。这是一个伪代码:
def update_user_data
new_data = fetch_new_data // this returns a Hash, e.g. {foo: 'foo', bar: 'bar'}
self.foo = new_data[:foo]
self.bar = new_data[:bar]
end
我试图通过某种循环使其更加智能化。所以我最终没有30多个相似的代码行。
我收到undefined method 'att=' for #<User:>
错误,我理解为什么会这样,我找不到解决方案。
USER_ATTRIBUTES = [:foo, :bar]
USER_ATTRIBUTES.each do |att|
self.att = adapt_data[att]
end
答案 0 :(得分:0)
假设这是一个ActiveRecord模型,你应该这样做:
USER_ATTRIBUTES.each do |attr|
write_attribute(attr, adapt_data[attr])
end