首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError: 0不是符号

TypeError: 0不是符号
EN

Stack Overflow用户
提问于 2014-10-26 00:59:12
回答 2查看 5K关注 0票数 12

只要试着用ActiveRecord保存,我就会得到"TypeError: nil不是符号“

代码语言:javascript
运行
复制
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

我运行上述代码。

模式:

代码语言:javascript
运行
复制
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之后,它也不允许我使用pry。

代码语言:javascript
运行
复制
#<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而不是sqlite。我尝试了不同的列数据类型。问题是领域“数量”。不会让我存钱的。

编辑:变量'main‘设置在显示的上面。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-26 02:10:44

好的,我终于找到了答案。我创建了join表,没有id字段的条目。如果使用join表作为一个具有额外数据的模型,这是必需的。

票数 29
EN

Stack Overflow用户

发布于 2017-01-28 03:17:12

对于那些来到这里并需要添加主键的人,您可以在这样的迁移中这样做:

class AddIdToMyTable < ActiveRecord::Migration def change add_column :my_table, :id, :primary_key end end

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26568797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档