Добавить новое значение к типу столбца json в Rails / Ruby - PullRequest
0 голосов
/ 06 декабря 2018

В моей модели Share есть атрибут transaction_ids, который имеет тип столбца :json.Все, что мне нужно, это хранить список идентификаторов транзакций, которые будут отслеживать историю, так что со временем ее можно будет «отслеживать».

При первом создании общего ресурса я просто добавляю текущий @transaction.id к нему.Работает отлично.Он просто добавляет что-то вроде "54" в столбец.

@number_of_share_numbers_to_create.times do |i|
  Share.create(
    owner_id: params[:buying_shareholder_id], 
    captable_id: @transaction.captable.id, 
    company_id: @transaction.company.id, 
    share_number: @latest_share += 1,
    transaction_ids: @transaction.id.to_json # => "55"
  )
end

Что бы я хотел сделать сейчас, если этот ресурс участвует в другой транзакции, просто добавить к нему этот идентификатор.Например, когда общий ресурс меняет владельцев, я использую этот код для обновления владельца.Я хотел бы добавить, что мы добавляем идентификатор последней транзакции в столбец.

@share_numbers_on_cap.each do |share|
    share.update_attribute(:owner_id, @buying_shareholder.id)
    # TODO append @transaction.id to share.transaction_ids so we capture the history of this share for later. 
end

Некоторые вопросы, с которыми я борюсь:

  1. На самом деле я нигде не определил структуру json, поэтому мне интересно, смогу ли яиспользуйте << или .push()?
  2. Это нормально, что при создании общих ресурсов я просто заканчиваю, например, "50" в качестве атрибута для @share.transaction_ids?
  3. Что еслипо какой-то причине у акции нет идентификаторов транзакций - можем ли мы просто добавить самую последнюю?

Любое руководство приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...