相关疑难解决方法(0)

在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
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails dynamic-finders ruby-on-rails-3

9
推荐指数
2
解决办法
3万
查看次数