Đơn giản chỉ cần cố gắng để tiết kiệm với ActiveRecord và nó tôi tiếp tục nhận được "Lỗi Loại: nil không phải là một biểu tượng"Lỗi Loại: nil không phải là một biểu tượng
if card_data[:card] and card_data[:deck]
e = self.find_or_create_by(card_id: card_data[:card].id, deck_id: card_data[:deck].id, main: main)
e.card = card_data[:card]
e.deck = card_data[:deck]
e.quantity = card_data[:quantity].to_i
e.main = main
p e
e.save if e.card and e.deck
end
tôi chạy đoạn mã trên.
Schema:
create_table "entries", id: false, force: true do |t|
t.integer "card_id"
t.integer "deck_id"
t.integer "quantity", default: 0, null: false
t.integer "main", default: 0, null: false
t.datetime "created_at"
t.datetime "updated_at"
end
Khi tôi sử dụng nâng lên, nó sẽ không cho phép tôi e.save thậm chí ngay sau khi tôi find_or_create_by.
#<Entry card_id: 1, deck_id: 1, quantity: 4, main: 1, created_at: "2014-10-26 00:45:12", updated_at: "2014-10-26 00:45:12">
(0.2ms) BEGIN
(0.2ms) ROLLBACK
TypeError: nil is not a symbol
from /home/kevin/.rvm/gems/ruby-2.1.2/gems/activemodel-4.1.6/lib/active_model/dirty.rb:162:in `attribute_was'
Vui lòng trợ giúp. Tôi đã dành hàng giờ cho việc này. Tôi đã cố gắng mysql insteal của sqlite. Tôi đã thử các kiểu dữ liệu cột khác nhau. Vấn đề là trường 'số lượng'. Nó sẽ không để tôi cứu.
Chỉnh sửa: biến 'chính' được đặt phía trên nội dung được hiển thị.
Là một sang một bên, bạn không nên sử dụng 'and' và 'hoặc' thay cho' && 'và' || '. Chúng không giống nhau. Xem https://github.com/bbatsov/ruby-style-guide#no-and-or-or – meagar