【问题标题】:Can't Access foreign key belongs to on carrierwave uploader无法访问外键属于carrierwave上传器
【发布时间】:2016-12-16 02:47:25
【问题描述】:

我有 Foo 和 Bar 模型

  • Foobelongs_to酒吧
  • 酒吧has_oneFoo

我想在载波上传器上获得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 %>

【问题讨论】:

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


    【解决方案1】:

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

    参考文献:

    所以你的情况

    class FooUploader < CarrierWave::Uploader::Base
    
      def initialize(*)
        super
        puts model.bar_id # Or model.bar for the model
      end
    
    end
    

    【讨论】:

    • 我认为你没有清楚地阅读我的问题,我尝试在初始化时调试但model.bar_id 始终为零。
    • 糟糕,对不起。我读到您只是尝试调用bar_id 而不是model.bar_id。您是否尝试在保存Foo 时访问bar_id?。那还是零吗?您也可以尝试在new 上设置bar_id 而不是barfoo_params.merge(bar_id: bar.id)
    • bar_id 在保存Foo 记录时不为零。
    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多