我按照“railstutorial.org”示例创建属于“Tickets”的“Logs”。即。 1“Ticket”有很多“Logs”。我可以在CONSOLE上添加“Ticket”。但是,当我尝试添加“日志”时,我收到错误消息“票证不能为空”。 (请参见下面的附件) 我想知道你是否可以给我一些建议/指示?先感谢您。 更新2012-09-03:我添加了模型的图片。非常感谢。
2012-09-05更新:更新模型以使用ticket_id的整数
答案 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
答案 2 :(得分:0)
第一次改变:
更改您的迁移并将外键设为Integer。使用t.integer :ticket_id
使外键命名明显且明确。
t.integer :ticket_id
第二: 现在尝试保存像
这样的值obj = Ticket.first
Log.create!(:ticket_id => obj.id)