登録項目数がべらぼうに多いので数stepの画面で登録するというアプリを引き継ぎました。
validationがほとんどなされていなかったので手を入れていますが、そのDRYで行き詰まってます。
class Host < ApplicationRecord Requiers = { stage1: [:email,:nickname], stage2: [:item1,:item2] } RequirsBylingual = { stage1: [:name], stage2: [:address] } Requirs.each do | validate_type,syms| with_options if: -> { @validate_type == validate_type } do validates *syms,presence: true end end RequirsBylingual.values.flatten.uniq.each do | sym | eval("def #{sym}_translations_valid? # ここにごちょごちょ end ") end # evalの中で呼んでるmethod def translations_valid? sym,ja_en # ごちょごちょ end
みたいに実装してうまく行ったのですが、問題はHostがhas_many,has_oneしている沢山のclassにこれを展開するにあたり、DRYしようかと
Requiers = { } RequirsBylingual = { } include VaridateHelper
としたところ VaridateHelper::Requiers がないというエラー。
class定数でなくても良いのですが、includeしたclassて定義したものをincludeされた方で参照するということは無理でしょうか。
試したこと
def request; { } ;end def self.request; { } ; end @request = { } @@request = { } module側で self.class::Requests
いずれもだめでした。
selfってインスタンスかとおもっていたのですが、includeされたmoduleをさしてました。
あとは、
継承を1段かますのでしょうか。。。。
include されたmoduleで参照できる手があると他にも出来ることが増えるので、お知恵をお借りしたい次第です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/17 01:03
2020/05/17 05:12