Есть ли способ получить доступ к модели соединения ассоциации "has_many,: through =>", созданной в ".build"?
Мне жаль, что у меня нет действительного кода здесь, но я надеюсь, что вы понимаете, что я хочу;)
a:
has_many :bs
has_many :cs, :through => :bs
b и c определены правильно (w / assign_to, has_many, has_many-through)
Теперь: в контроллере я пытаюсь сделать
var = @a.cs.build
(внутри транзакции, но я не думаю, что это уместно здесь), которая "создает" экземпляр c, а также соединение b. Но как я могу получить доступ к автоматически созданному b, поскольку я хотел бы передать некоторые атрибуты? Это вообще возможно, или мне нужно обойтись с
@a.create_c
# or
varb = B.new
varb.someattr1 = "foo" # <- this is what I want w/ .build
varb.someattr2 = "bar"
varb.a = @a
varc = C.new
varc.someattr3 = "asdf"
varb.c = varc
# ... and some .save!
или что-то подобное? Я не думаю, что это очень хороший стиль, и по какой-то причине он не «нарушает» транзакцию обертывания
Я очень надеюсь, что вы получите то, что я хочу.
EDIT
Хм, прежде всего: спасибо за ваши ответы, но я все еще застрял.
Я постараюсь быть более точным:
@a = A.new
@a.name = "foo"
varc = @a.cs.build
varc.name = "bar"
@a.save!
Это даст мне один экземпляр A, B и C. Как я могу установить атрибут для B?
СТГ. как:
varb = join_model_of(@a, varc)
varb.name = "foobar"
до @ a.save!
TYIA!