无法访问外键属于carrierwave上传器

时间:2016-12-16 02:47:26

标签: ruby-on-rails carrierwave ruby-on-rails-5

我有Foo和Bar模型

  • Foo belongs_to Bar
  • Bar has_one Foo

我希望在载波上传器上获得bar_id,但它的值总是为零。我在初始化时进行了调试

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 %>

1 个答案:

答案 0 :(得分:0)

您可以使用model属性访问上传者所属模型中的每个属性。

参考文献:

所以在你的情况下

class FooUploader < CarrierWave::Uploader::Base

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

end