2016-12-16 6 views
0

У меня есть 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 %> 

ответ

0

Вы можете получить доступ к каждому атрибуту из модели, к которой принадлежит пользователь, с атрибутом model.

Ссылки:

Так что в вашем случае

class FooUploader < CarrierWave::Uploader::Base 

    def initialize(*) 
    super 
    puts model.bar_id # Or model.bar for the model 
    end 

end 
+0

Я думаю, что вы сделали не Клири прочитать мою проблему, я стараюсь отладки на Initialize но 'model.bar_id' всегда нуль. – itx

+0

К сожалению, извините. Я читал, что вы просто пытались вызвать 'bar_id' вместо' model.bar_id'. Вы пытались получить доступ к 'bar_id', когда вы сохраняете' Foo' ?. Неужели это все еще ноль? Также вы можете попытаться установить 'bar_id' на' new' вместо 'bar':' foo_params.merge (bar_id: bar.id) ' – Spa

+0

' bar_id' не является нулем при сохранении записи 'Foo'. – itx

 Смежные вопросы

  • Нет связанных вопросов^_^