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

Aomine Daiki 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

Aomine Daiki

9 bài viết.
18 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
26 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 ...
Aomine Daiki viết 10 tháng trước
26 6
White
7 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...
Aomine Daiki viết hơn 1 năm trước
7 0
White
7 7
Kiểm tra url có tồn tại hay không ? Ngôn ngữ Ruby ruby require 'net/http' require 'openuri' def working_url?(url_str) url = URI.parse(ur...
Aomine Daiki viết 11 tháng trước
7 7
Bài viết liên quan
White
18 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 hơn 1 năm trước
18 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 7 tháng trước
1 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
9 bài viết.
18 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á!