在我的数据库中更新对象属性后,我似乎无法在后续方法调用中检索值。在我尝试检索数据时,我已经确认我的数据库中的属性已更新。
def task
update_objects(data)
retrieve_data
end
def update_objects(data)
data.each do |item|
keyword = self.keywords.find_by_description(item.keyword)
keyword.update_attributes(:total_value => item.totalValue.to_f, :avg_revenue_per_transaction => item.revenuePerTransaction.to_f)
end
end
def retrieve_data
keywords = self.keywords # The updated attributes in keywords are nil
# Do stuff with keywords
end
答案 0 :(得分:0)
这是因为在您致电keywords
之前,retrieve_data
集合可能已经加载。但是,调用find_by_description
不会使用已加载的集合(因为它使用查询API)并直接从数据库中提取要更新的新对象。原始加载的集合不知道这一点。有几种方法可以解决这个问题:
您可以调用reload
来刷新数据库中的集合:
def retrieve_data
keywords = self.keywords(true)
end
或者不使用查询API,而是使用集合本身:
keyword = self.keywords.detect{|k| k.description == item.keyword}
或者只是提前避免加载收藏品。