【问题标题】:can't write unknown attribute `example` typed_store - Rails无法编写未知属性`example` typed_store - Rails
【发布时间】:2019-06-17 07:05:00
【问题描述】:

我有这个模型,我想使用 update_columns 活动记录来更新我的排版列

我在堆栈中搜索了很多答案,似乎没有很多关于 typestored 的资源。

show.html.erb

<%= form_tag print_booking_path(@booking), method: 'post' do %>
 <%= label_tag :name %>
 <%= text_field_tag :name, '', class: 'form-control' %>
 <%= label_tag :age %>
 <%= text_field_tag :age, '', class: 'form-control' %>
 <%= submit_tag "Print", class: "btn btn-default" %>
 <%= link_to 'Cancel', '#', class: 'btn btn-default', data: { dismiss: 'modal' } %>
<% end %>

bookings_controller

def print
    @booking = Booking.find(params[:id])
    if @booking.print_model(current_user, params[:name], params[:age])
      render :print
    else
      render :print
    end
  end

预订模式

def print_model(user, name_test, age_test)
 self.update_columns(name: name_test, age: age_test)
end

预订模式下的typestore

typed_store :profile, coder: PostgresCoder do |i|
 i.string :name, default: ""
 i.integer :age, default: 0
end

错误似乎是这样的
无法写入未知属性name

如果我想像这样更新 self.increment!(:age)

【问题讨论】:

  • 嗨,你能把你的模型整体展示一下吗?
  • 我需要提供什么样的信息? @GuilhermeNunes
  • 请显示模型、迁移和您执行的代码以及它产生的错误。
  • 知道你是如何配置商店的也会很有趣,因为有一些不同的方法来制作它。 :)
  • 太棒了,我已经在下面更新了我的答案,我希望它有效

标签: ruby-on-rails ruby model-view-controller


【解决方案1】:

我在这里做了一些测试,我不知道这是否有意义,但是在更新存储的情况下,所有类型存储的列都在数据库中的一个真实列中(通常是散列或 Json )。

所以最直接的方法是用括号括起来。

尝试改变:

self.update_columns( name: name_test, age: age_test )

收件人:

self.update_columns( profile: { name: name_test, age: age_test} )

【讨论】:

  • 我已经解决了这个问题,但这仍然是一个很好的答案,因为我们只用一行来做,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 2021-01-14
  • 2014-01-11
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多