Я написал код, который написал сам, что мне нужно переписать как короткий блок. У меня есть 8 моделей, и я создаю таблицу связанных идентификаторов. Поэтому я просматриваю кусок кода, который является тем же, за исключением того, что для каждого экземпляра модели/объекта есть 7 вещей, с которыми нужно работать. Таким образом, это похоже на цикл из 8 выберите 1, сделайте что-то подобное с другим 7. затем выберите следующий из семи и продолжите. Я понятия не имею, как назвать это задание - рефакторинг, функции и т. Д. Являюсь новым для веб-программирования 3 месяца и нуждаюсь в некоторой помощи. Я знаю, что это можно сделать, поскольку я использовал программу 8 лет назад. Кодовые блоки ниже. Модели (сказки, нравственность, ценности, книги, ключевые слова, символы) этот фрагмент кода повторяется для всех вещей по одному. Поэтому я хочу просто передать слово функции и не только использовать это как параметр, но и использовать его для генерации кода. Например, в приведенном ниже примере я хочу передать MORAL, а остальная часть кода должна быть сгенерирована сама по себе.Rails - Функция - Многоразовый блок кода - Как? - рефакторинг
moral_ids_to_delete = A(@tale_relation.moral_ids) - @moral_ids
moral_ids_to_delete.each do |id|
moral = TaleRelation.find_by(field: 'moral_ids', moral_ids: id)
@value_relations.each do |relation|
if A(moral.tale_ids) - A(relation.tale_ids) == [] then
moral.value_ids = S(A(moral.value_ids) - A(@tale_relation.value_ids) + A(relation.value_ids))
else
relation.moral_ids = S(A(relation.moral_ids) - A(id))
end
end
@book_relations.each do |relation|
if A(moral.tale_ids) - A(relation.tale_ids) == [] then
moral.book_ids = S(A(moral.book_ids) - A(@tale_relation.book_ids) + A(relation.book_ids))
else
relation.moral_ids = S(A(relation.moral_ids) - A(id))
end
end
@keyword_relations.each do |relation|
if A(moral.tale_ids) - A(relation.tale_ids) == [] then
moral.keyword_ids = S(A(moral.keyword_ids) - A(@tale_relation.keyword_ids) + A(relation.keyword_ids))
else
relation.moral_ids = S(A(relation.moral_ids) - A(id))
end
end
@character_relations.each do |relation|
if A(moral.tale_ids) - A(relation.tale_ids) == [] then
moral.character_ids = S(A(moral.character_ids) - A(@tale_relation.character_ids) + A(relation.character_ids))
else
relation.moral_ids = S(A(relation.moral_ids) - A(id))
end
end
moral.tale_ids = S(A(moral.tale_ids) - @tale_ids)
moral.update(tale_ids: moral.tale_ids, value_ids: moral.value_ids, book_ids: moral.book_ids, keyword_ids: moral.keyword_ids, character_ids: moral.character_ids)
end
Вы должны рассмотреть вопрос о размещении этого вопроса на http://codereview.stackexchange.com/ – max