Просто пытаются спасти с ActiveRecord и я получаю «TypeError: ноль не является символом»TypeError: ноль не является символом
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
Я бегу приведенный выше код.
Схема:
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
Когда я использую совать нос, он не позволит мне e.save даже сразу после того, как я 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'
Прошу вас, помощь. Я потратил несколько часов на это. Я пробовал mysql insteal sqlite. Я пробовал разные типы данных столбцов. Вопрос - это поле «количество». Это не позволит мне сэкономить.
Редактировать: переменная 'main' установлена выше того, что показано.
Как и в сторону, вы не должны использовать 'and' и 'или' вместо '&&' и '||'. Они не то же самое. См. Https://github.com/bbatsov/ruby-style-guide#no-and-or-or – meagar