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}
或者干脆避免提前加载集合