не может написать неизвестный атрибут `пример` typed_store - Rails - PullRequest
0 голосов
/ 17 июня 2019

У меня есть эта модель, в которой я хочу обновить свои типизированные столбцы, используя активную запись update_columns

Я искал множество ответов в стеке, похоже, не хватает ресурсов относительно сохраненных типов.

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

тип хранилища при модели бронирования

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

ошибкапохоже, что это
не может написать неизвестный атрибут name

это то же самое, если я хочу обновить как этот self.increment! (: age)

1 Ответ

0 голосов
/ 17 июня 2019

Я провел несколько тестов здесь, и я не знаю, имеет ли это смысл, но в случае обновления хранилищ все типизированные столбцы находятся внутри только одного реального столбца в базе данных (обычно это хеш или Json ).

Итак, прямой способ сделать это - заключить в скобки.

Попробуйте изменить:

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

Кому:

self.update_columns( profile: { name: name_test, age: age_test} )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...