В моей модели 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
Некоторые вопросы, с которыми я борюсь:
- На самом деле я нигде не определил структуру json, поэтому мне интересно, смогу ли яиспользуйте
<<
или .push()
? - Это нормально, что при создании общих ресурсов я просто заканчиваю, например,
"50"
в качестве атрибута для @share.transaction_ids
? - Что еслипо какой-то причине у акции нет идентификаторов транзакций - можем ли мы просто добавить самую последнюю?
Любое руководство приветствуется!