У меня есть Foo и Bar моделируютне удается получить доступ к внешнему ключу принадлежит на carrierwave пользователя
- Foo Bar
belongs_to
- Бар
has_one
Foo
Я хочу получить bar_id
на carrierwave пользователя, но он всегда равен нулю. У меня есть отладки на инициализации
class FooUploader < CarrierWave::Uploader::Base
def initialize(*)
super
binding.pry # debug here
end
end
экрана Поддеть при отладке:
[1] pry(#<FooUploader>)> model
=> #<Foo _id: 585347a5fe37a81f4773b3ac, created_at: nil, updated_at: nil, picture_filename: nil, bar_id: nil, name: "test", slug: "test", description: "test">
Я уверен, что bar_id
значения существует, у меня есть попробовать два способа:
положить в контроллере
def create
bar = Bar.first
@foo = Foo.new(foo_params.merge(bar: bar))
end
или положить в форму
<%= f.hidden_field :bar_id, value: Bar.first %>
Я думаю, что вы сделали не Клири прочитать мою проблему, я стараюсь отладки на Initialize но 'model.bar_id' всегда нуль. – itx
К сожалению, извините. Я читал, что вы просто пытались вызвать 'bar_id' вместо' model.bar_id'. Вы пытались получить доступ к 'bar_id', когда вы сохраняете' Foo' ?. Неужели это все еще ноль? Также вы можете попытаться установить 'bar_id' на' new' вместо 'bar':' foo_params.merge (bar_id: bar.id) ' – Spa
' bar_id' не является нулем при сохранении записи 'Foo'. – itx