在Rails中同时更新两个表

时间:2013-05-08 17:13:28

标签: ruby-on-rails ruby-on-rails-3

我有两个表:产品和推荐。两个表中的前200万条记录包含相同的数据,然后对于大约10万条记录有所不同。基本上这些表包含产品ID,我需要编写一个调用API来更新每个产品/推荐属性(标题,价格等)的脚本。是否可以同时更新两个表上的属性而不是更新产品模型属性,并且基本上使用相同的脚本来更新推荐模型?

Api Parser:

def get_item_info(id)
  url_raw = URI.parse("url_id=#{id}")
  url = Net::HTTP.get_response(url_raw).body
  if url.empty?
    @title        = "Product Unavailable via API"
    @prod_url     = "url"
    @cover_img    = "image"
    @price        = "Product Unavailable via API"
  else
    begin
      @response1  = JSON.parse(url)
      @title      = @response1["ProductName"]
      @prod_url   = "#{@response1["ProductUrl"]}"
      @cover_img  = @response1["ImagePath"].gsub("75X75.gif", "180X180.jpg")
      @price      = @response1["currentItemPrice"]
    rescue
    end
  end
end

我目前正在实时获取这些数据并将其发送到我的视图中。我想将图像和标题保存到我的数据库,以加快页面加载时间。我的产品和推荐表都具有相同的模式,我需要更新两个表上的相同列。

1 个答案:

答案 0 :(得分:0)

您可以直接从数据库中使用触发器方法。 例如,使用 SQLite

CREATE TRIGGER 'triggername' 
AFTER 'event' ON 'tablename' 
WHEN 'condition' 
BEGIN 
  UPDATE 'tablename2' SET 'field' = 'value' 
  WHERE 'condition';
END

......你不必考虑它!!!!