Tag: dynamic finders

在Rails 3中查找_or_create_by并更新以创建记录

我不确定我是否应该以这种方式更新记录,或者我是否遗漏了某些内容。 我有一个包含5列(不包括时间戳和id)的表,其中3个是不同的,2个将更新。 我将找到或创建的3个不同的是room_id,date和source。 另外2个是可用的价格和点数(这些每小时,每天等变化) 我的问题是,如果我首先找到或创建记录,然后更新(或创建)价格和点数,或者我可以一次完成所有操作吗? 你现在可以看到我正在做的两种方式,而且我不确定它是否真的在做我期待的事情。 另外,像这样做find_and_create_by有什么缺点吗? 谢谢 private def self.parse_data(params,data) data.beds.each do |bed| room = Room.find_or_create_room(bed.title, params[:id]) #find clones somehow #puts bed.nights.first.price bed.nights.each_with_index do |night,index| available = Available.find_or_create_by_room_id_and_bookdate_and_source( :room_id => room.id, :bookdate => (params[:date].to_date)+index, :source => data.class.to_s#, #:price => night.price ) #available.price = night.price #available.spots = night.spots #available.save end end