Ruby on rails Can';t从数据库中提取对象更新的属性
更新数据库中的对象属性后,我似乎无法在随后的方法调用中检索回这些值。在我尝试检索数据时,我已确认数据库中的属性已更新Ruby on rails Can';t从数据库中提取对象更新的属性,ruby-on-rails,ruby,Ruby On Rails,Ruby,更新数据库中的对象属性后,我似乎无法在随后的方法调用中检索回这些值。在我尝试检索数据时,我已确认数据库中的属性已更新 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_attribu
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
这是因为在调用
retrieve\u data
之前,可能已经加载了keywords
集合。但是,调用find\u by\u description
不会使用加载的集合(因为它使用的是查询API),而是直接从要更新的数据库中获取新对象。原始加载的集合不知道这一点。有几种方法可以解决此问题:
您可以调用reload
从数据库刷新集合:
def retrieve_data
keywords = self.keywords(true)
end
或者不使用查询API,而是使用集合本身:
keyword = self.keywords.detect{|k| k.description == item.keyword}
或者干脆避免提前加载集合