2016-08-01 2 views
0

У меня есть следующая строка в моем создании действия:Как я могу создать экземпляр дочерних объектов с использованием методов .build_ Rails при использовании STI?

@financial_goal = current_user.send("build_#{type.underscore}",financial_goal_params) 

У меня возникли проблемы с методом построения не определен, потому что я не сделал: HAS_ONE на моей модели пользователя для всех моих подклассов ИППП.

Как я объяснить это, я думаю, что я иду в двух вариантах:

А) Создание объекта прямо из подкласса и прыгают с помощью build_ то просто добавьте user_id: current_user.id

B) Добавить все подклассы как has_one под моим user.rb, но это уже звучит ужасно, так как каждый раз, когда я создаю новый подкласс, мне нужно будет добавить ассоциацию.

Похоже, что вариант А есть?

ответ

0

Для того, чтобы держать вещи двигаться, я думаю, что самый разумный способ уклониться методы build_ и просто пойти с этим:

@financial_goal = klass.new(financial_goal_params.merge(user_id: current_user.id))