2015-02-18 3 views
0

Поясню первую мою модель структуры:Rails 4.1 7 Mongoid ActiveRecord является автосохранение без вызова .save

У меня есть модель статус:

class Status 
    include Mongoid::Document 
    include Mongoid::Search 
    include Mongoid::Timestamps 

    field :status_code, type: Integer 
    field :status_description, type: String 

    validates :status_code, :status_description, :transactiontype, :presence => true 

    belongs_to :transactiontype, :class_name => 'Transactiontype' 
    has_many :transactions, :class_name => 'Transaction', autosave: false 

    search_in :status_code, :status_description, :transactiontype => :transaction 

    def self.getStatus(transactiontype) 
    statuses = Status.where(:transactiontype_id => transactiontype).all 

    stats = [] 
    puts "DATE DASHBOARD: #{Time.now.beginning_of_day} to #{Time.now.end_of_day}" 
    statuses.each do |status| 
     transactions = status.transactions.dateRange(Date.today.beginning_of_day, Date.today.end_of_day) 
     if transactions.length > 0 
     status.transactions = transactions 
     stats.push(status) 
     end 
    end 
    puts "SIZE : #{stats.size}" 
    stats 
    end 

    etc.. 

end 

то у меня есть еще одна модель под названием операции:

class Transaction 
    include Mongoid::Document 
    include Mongoid::Search 
    include Mongoid::Timestamps 
    field :ref_no, type: String 
    field :trans_date, type: DateTime 

    belongs_to :status, :class_name => 'Status' 
    belongs_to :transactiontype, :class_name => 'Transactiontype' 

    validates :ref_no, :trans_date, :status, :presence => true 
    def self.dateRange(startdate,enddate) 
    puts "DATE : #{startdate} to #{enddate}" 
    if !startdate.blank? 
     where(:created_at => {"$gt" => startdate.beginning_of_day, "$lt" => enddate.end_of_day}) 
     # where(:trans_date.gte => startdate.beginning_of_day, :trans_date.lte => enddate.end_of_day) 
    end 
    end 

    etc.. 

end 

странная часть является то, что:

, когда им пытаются выполнить:

Status.getStatus(params[:transactiontype_id]) 

Я получил правильный вывод, но транзакции, связанные с статусом, обновляются, и каждая запись до того, как отфильтрованная дата обновляется с нулевым статусом.

я уже пытался добавить автосохранение: ложь, но ничего не работает

может кто-то помочь мне с этим?

ответ

0

решение преобразовать активную запись в JSon первый

def self.getStatus(transactiontype) 
    statuses = Status.where(:transactiontype_id => transactiontype).all 

    stats = [] 
    puts "DATE DASHBOARD: #{Time.now.beginning_of_day} to #{Time.now.end_of_day}" 
    statuses.each do |status| 
     ar_status = status.as_json 
     ar_status['transactions'] = status.transactions.dateRange(Date.today.beginning_of_day, Date.today.end_of_day) 
     if ar_status['transactions'].length > 0 
     stats.push(ar_status) 
     end 
    end 
    puts "SIZE : #{stats.size}" 
    stats 
    end 

по какой-то причине .. его автоматическое сохранение записей.