Rails Создание 2 одинаковых моделей с одной формой - PullRequest
0 голосов
/ 11 мая 2018

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

Вот модели:

    class Waterusage < ApplicationRecord
  belongs_to :user

  before_validation :calculate_totals

  def calculate_totals
    self.home_usage = get_home_usage
    self.outdoor_usage = get_outdoor_usage
    self.vehicle_usage = get_vehicle_usage
    self.power_usage = get_power_usage
    self.indirect_source_usage = get_indirect_source_usage
    self.household_total = get_household_total
    self.individual_total = get_individual_total
  end

  def get_household_total
    home_usage + outdoor_usage + vehicle_usage + power_usage + indirect_source_usage
  end

  def get_individual_total
    household_total / household_size
  end

  def get_home_usage
    shower_total + bath_total + bathroom_sink_total + toilet_total + 
    kitchen_total + dishwashing_total + laundry_total + greywater
  end

  def get_outdoor_usage
    lawn_total + swimming_total
  end

  def get_vehicle_usage
    (0.735 * miles) + carwash_total
  end

  def get_power_usage
    statewater * percent_statewater / 100
  end

  def get_indirect_source_usage
    (household_size*(shopping + paper_recycling + plastic_recycling + can_recycling + textile_recycling + diet)) + (200 * pet_cost / 30)
  end

  ... (Insert many sub calculations here of attributes in the waterusages schema)
end

Модель целей идентична.

В контроллере целей необходимо создать новый экземпляр, используяэкземпляр waterusages, связанный с тем же пользователем current_user.

Контроллер целей должен редактировать свои атрибуты независимо от waterusages.

Как мне установить цели.new равными waterusage.new?В одном из контроллеров моделей?

1 Ответ

0 голосов
/ 12 мая 2018

В вашем goals_controller.rb вы можете сделать:
waterusage_params = waterusage.attributes.except('id', 'created_at', 'updated_at') # assuming that you have an instance of Waterusage goal = Goal.create(waterusage_params)

...