2015-10-09 3 views
0

Как реализовать следующий запрос в рубиновой модели:PSQL запрос в рубиновой модели

select * from outsources where folder_id = 28 and id != 44 and returned = false; 

Здесь, как получить доступ к текущей записи идентификатора вместо конкретного идентификатора

Вот модель аутсорсер:

class Outsource < ActiveRecord::Base 
    include Workflow 

    workflow_column :status 

    # constants 
    belongs_to :client 
    belongs_to :vendor 
    belongs_to :folder 

    after_initialize :init_dates 
    before_update :init_return_date 

    validate :folder_availability, if: proc { |i| i.folder.present? } 
    validates_presence_of :folder_id, :vendor_id 

    scope :open_transactions, -> { where(status: [OUTSOURCED, FINISHED, CANCELED]) } 

    workflow do 
    state :outsourced 
    end 

    private 

    def folder_availability 
    errors.add(:folder_id, 'This folder is not available for outsource. Please review.') \ 
     if self.folder.completed? || self.folder.abandoned? || self.folder.canceled? || self.folder.closed? 
    end 

    def init_dates 
    self.outsource_date ||= Date.today 
    end 

    def init_return_date 
    self.return_date ||= Date.today 
    end 
end 

Настоящая запись - это Аутсорсинг и Папка. В какой же папке принадлежит несколько аутсорсистов. Мне нужно изменить статус с внешнего источника на незавершенный период, когда все возвращаемые значения для внешних источников вернутся.

ответ

-1

Посмотрите на ActiveRecord basics. Это vital, чтобы узнать это при работе с рельсами.

Для вашего запроса, он будет конвертировать в:

Outsource.where(folder_id: 28, returned: false).where.not(id: 44) 

Update:

Да, вы можете заменить номера с переменными. Rails даже достаточно умен, чтобы автоматически получить все outsources, принадлежащие вашему current_folder.

current_folder.outsources.where(returned: false).where.not(id: current_outsource) 
+0

Здесь мне нужно использовать текущий идентификатор записи вместо 28 и 44. Могу ли я использовать self.folder_id и self.id для текущей записи. – geethujoseph

+0

Что такое current_record? Вы установили связь между моделями? –

+0

И да, вы можете заменить свои номера на переменные –