ROR DB协会 - 缺少什么?

时间:2012-09-02 05:03:17

标签: ruby-on-rails ruby

我按照“railstutorial.org”示例创建属于“Tickets”的“Logs”。即。 1“Ticket”有很多“Logs”。我可以在CONSOLE上添加“Ticket”。但是,当我尝试添加“日志”时,我收到错误消息“票证不能为空”。 (请参见下面的附件) 我想知道你是否可以给我一些建议/指示?先感谢您。 更新2012-09-03:我添加了模型的图片。非常感谢。 img3 img1 img2 model

2012-09-05更新:更新模型以使用ticket_id的整数 20120905

3 个答案:

答案 0 :(得分:1)

执行Ticket.new或Ticket.first时,请检查显示的属性。根据此处显示的代码,对于Ticket模型,您创建了一个列ticket_id,rails负责id生成,并且可以考虑使用此属性 -

  

约定优于配置

生成的id将作为主键,可用于从日志中引用Ticket。

答案 1 :(得分:1)

找到根本原因。这是因为“:ticket_id”没有添加到“log.rb”中的“attr_accessible” 在“log.rb”中将“:ticket_id”添加到“attr_accessible”后,问题就消失了。 (请参见下图)。

还在下面的链接中了解了“attr_accessible”。 http://madkingsmusings.blogspot.tw/2011/04/attraccessible-and-security-in-rails.html 1 2

答案 2 :(得分:0)

第一次改变:

更改您的迁移并将外键设为Integer。使用t.integer :ticket_id使外键命名明显且明确。

t.integer :ticket_id

第二: 现在尝试保存像

这样的值
obj = Ticket.first
Log.create!(:ticket_id => obj.id)