Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tạo / duy trì trường ID trong Sequel Pro qua Ruby và mysql2

Được rồi, tôi tin rằng cuối cùng tôi đã hiểu ra điều này.

"Vì giá trị id đang được tạo bởi MySQL, tôi muốn đặt / tạo / duy trì trường id trong ruby ​​để puts dog.id sẽ không phải là một chuỗi trống. "

=> vì giá trị id được gán tự động trong MySQL nên Ruby không có cách nào biết giá trị id đó là gì và do đó việc gọi dog.id sẽ trả về một chuỗi trống.

=> Tôi cần tìm cách ánh xạ giá trị id của một đối tượng trong ruby ​​sao cho nó giống với id tự động được gán cho đối tượng khi tôi chèn nó vào cơ sở dữ liệu MySQL.

=> Hãy chú ý đến câu lệnh được sử dụng để tạo Table dog:

CREATE TABLE dogs(
id INT PRIMARY KEY AUTO_INCREMENT,
name TEXT,
color TEXT
);

nó dịch ra mỗi con chó tạo ra có một id (được tự động gán cho nó), tên và màu sắc. Có hai cách tiếp cận để nghĩ đến việc lưu trữ thông tin của các đối tượng chó:

dog = { "id" => 'some integer', "name" => "simba", "color" => "grey" }

dog = [1, "simba", "grey"]

Tôi thường thích sử dụng mảng để lưu trữ thông tin nhưng lần này tôi đã sử dụng hàm băm (vì khi tôi gọi .inspect trên dog (không phải Dog), kết quả là như thế này:

#<Dog:0x007fbf74c55068 @name="samba", @color="grey">

khiến tôi nghĩ đến cấu trúc dữ liệu băm:

{ "id"=> 1, "name"=>"simba", "color"=>"grey"}

Trong Ruby, tôi làm điều này:

def row_hash(hash)
  hash={}
  Dog.new(hash[name], hash[color]).tap { |id| id = hash[id] }
end

Trong đó hash_row đề cập đến hàng chứa thuộc tính của mỗi đối tượng dog. Về cơ bản, điều này cho phép Ruby biết rằng mỗi khi nó khởi tạo một phiên bản mới của class Dog, nó sẽ nhấn vào phần khởi tạo đó và ánh xạ hàm băm [id] thành "id".

Làm điều này cho phép tôi truy cập giá trị của "id" trong ruby.

Tái bút:Điều này chỉ xảy ra với tôi. Tôi có thể sẽ chỉnh sửa câu trả lời này sau khi nó thấm một thời gian.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn ngày hiện tại trong thời gian mysql

  2. Làm cách nào để thêm một cột tăng dần trên một cột khác trong cùng một bảng?

  3. Tại sao truy vấn mysql này (với là kiểm tra null) lại chậm hơn truy vấn khác?

  4. Khi nào thì tôi KHÔNG nên sử dụng mysql_real_escape_string

  5. Thêm phân trang và tìm kiếm bằng cách sử dụng dữ liệu jquery