Переменная Rails.Share между двумя моделями (проверка) - PullRequest
0 голосов
/ 22 января 2020

Так что возникают некоторые проблемы, как решить мои puzzle.

У меня есть 2 модели

1) Mode1.rb

class Model1 < ActiveRecord::Base
  set_table_name "Model1"
  set_sequence_name "Model1"  

    module Validate
      def validate_discount
        errors.add(:discount, "#blank") if discount.blank?
      end
    end
end

2) Model2 .rb

class Model2 < ActiveRecord::Base
  include Model1::Validate

  validate :validate_discount

end

Что мне нужно? Проблема в том, что на странице отправки работает model2, поэтому мне нужно выполнить проверку оттуда, чтобы получить правильное отображение ошибок, но поскольку discount существует только в model1, мне нужно передать его в model2

Ошибка, которую я получаю сейчас:

undefined local variable or method `discount' for #<Model2:0x12c952f8>

Может мне нужно как-нибудь пропустить ее через контроллер? Я имею в виду что-то вроде этого:

Model2.new
Model2["discount"] = 20
Model2.discount

Я застрял сейчас.

1 Ответ

1 голос
/ 23 января 2020

Я думаю, вы можете использовать attr_accessor для этой цели. С этим вы можете установить и получить значение атрибута discount.

class Model2 < ActiveRecord::Base
  include Model1::Validate

  attr_accessor :discount

  validate :validate_discount

end

С этим вы можете вызвать:

model2 = Model2.new
model2.discount = params[:discount] #or whatever you set value for discount

И затем проверить его с помощью вашего Model1::Validate модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...