Lưu chuỗi hash vào PostgreSQL cho ứng dụng Ruby on Rails
TIL
635
RubyOnRails
40
White

Derek Nguyen viết ngày 07/08/2016

Lưu chuỗi hash vào PostgreSQL cho ứng dụng Ruby on Rails

Chào tất cả mọi người, mình cũng chỉ là noob , mới code ROR được 6 tháng thôi. Hôm nay, cái dự án có 1 form cần lưu lại các giá trị tương ứng với từng tháng. Vì số năm là random nên mình quyết định lưu toàn vộ key ( tháng) - value như 1 chuỗi hash.

Ví dụ :

Mở terminal run
rails g migration enable_hstore_extension

để có thể sử dụng được hstore ( HStore is a key value store within Postgres database. ).

class EnableHstoreExtension < ActiveRecord::Migration
    def change
        enable_extension 'hstore'
    end
end 

run rails g migration add_description_to_books

class AddDescriptionToBooks < ActiveRecord::Migration
  def change
    add_column :books, :description, :hstore, default: {}, null: false
  end
end

Kết quả :

b = Book.create
#   (0.2ms)  BEGIN
#  SQL (0.7ms)  INSERT INTO "books" ("created_at", "updated_at")
#   VALUES ($1, $2)
#   RETURNING "id"  [["created_at", "2014-10-10 10:42:49.968435"], ["updated_at", "2014-10-10 10:42:49.968435"]]
#   (0.9ms)  COMMIT
# => #<Book id: "75fd5620-7a09-4ae1-88b4-935385a4e970", title: nil, created_at: "2014-10-10 10:42:49", updated_at: "2014-10-10 10:42:49", description: {}>

b.description
# => {}

b.description.class
# => Hash

b.description['en'] = 'Eccentric duck'
# => "Eccentric duck"

b.save
#   (0.2ms)  BEGIN
#  SQL (0.4ms)  UPDATE "books" SET "description" = $1, "updated_at" = $2
#   WHERE "books"."id" = '75fd5620-7a09-4ae1-88b4-935385a4e970'
#   [["description", "\"en\"=>\"Eccentric duck\""], ["updated_at", "2014-10-10 10:43:35.869645"]]
#   (0.9ms)  COMMIT
# => true

b = Book.first
#  Book Load (0.8ms)  SELECT  "books".* FROM "books"  ORDER BY "books"."id" ASC LIMIT 1
# => #<Book id: "75fd5620-7a09-4ae1-88b4-935385a4e970", title: nil, created_at: "2014-10-10 10:42:49", updated_at: "2014-10-10 10:43:35", description: {"en"=>"Eccentric duck"}>

b.description
# => {"en"=>"Eccentric duck"}

b.description['en']
# => "Eccentric duck"

Có gì thiếu sót mong các bác góp ý. Em xin cảm ơn !

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Derek Nguyen

11 bài viết.
21 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
34 6
Nếu bạn muốn xây dựng một website mà chỉ bao gồm HTML, CSS và Javascript. Bạn có thể xây dựng 1 static web hoàn toàn miễn phí phục vụ cho việc học ...
Derek Nguyen viết hơn 1 năm trước
34 6
White
8 0
Nội dung của bài viết này có thể đã có rất nhiều người đã biết, nhưng mình cũng xin được chia sẽ lại cho những ai chưa biết. Hoàn Cảnh Data cons...
Derek Nguyen viết 2 năm trước
8 0
White
7 0
Hello React Native Chắc hẳn các bạn không còn xa lạ với React Native (RN) nên mình sẽ không giới thiệu nó là cái gì nữa mà sẽ bắt tay vào làm một ...
Derek Nguyen viết gần 2 năm trước
7 0
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 5 tháng trước
0 2
White
20 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết 2 năm trước
20 1
White
9 0
Có một tuyên ngôn cho chủ nghĩa tối giản trong ngành phần mềm. Link: http://minifesto.org/ Fight for Pareto's law, look for the 20% of effort th...
Cẩm Huỳnh viết 2 tháng trước
9 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
11 bài viết.
21 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!