2014-02-11 2 views
1

Я новичок в Rails. Я написал две модели A и B. Модель А и В, как следующие:Функция для заполнения данных модели другой моделью

class A < ActiveRecord::Base 
    attr_accessible: a1, a2 
end 

class B < ActiveRecord::Base 
    attr_accessible: b1,b2 
    self.table_name = "b" 
end 

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

+0

Вы хотите, чтобы все данные из B заменяли содержимое A каждый день? Или просто скопируйте новые данные? Возможно, вам придется уточнить. Самое простое решение на данный момент состоит в том, чтобы просто сделать это с помощью sql. 'A.connection.execute ('вставить в (a1, a2) (выберите b1, b2 из b)')' – Shadwell

ответ

1

Вы упомянули, что есть некоторые задачи рейка. Вы можете поместить код внутри них в каталог lib/tasks. В качестве примера:

copy_from_b_to_a.rake

namespace :copy do 
    task :from_b => :environment do 
    B.all.each do |b| 
     a = A.new a1 => b1, a2 => b2 
     a.save 
    end 
    end 
end 

Если вы запустите rake -T, вы можете увидеть rake copy:from_b перечислены задачи, и при запуске, он будет пытаться скопировать данные исполняющих код внутри созданной задачи .rake.

Это просто простой пример работы с рейк-задачами.

Смежные вопросы