【发布时间】:2016-06-16 20:18:19
【问题描述】:
我有模特
class Card < ActiveRecord::Base
belongs_to :CardColour
validates :CardColour, presence:true
在控制台中输入
@a = Card.new(:card_colour_id =1)
但是它是无效的。我问为什么,通过@a.errors,控制台告诉我
=> #<ActiveModel::Errors:0x000000052e57e8 @base=#<Card id: nil, card_colour_id: 1>, @messages={:CardColour=>["can't be blank"]}>
我花了好几个小时来研究这个问题,完全困惑,不知为什么我似乎无法在 Rails 中做最简单的事情。
我查找了标题相似的问题,但它们似乎都是更复杂的场景。我有比这个例子更多的事情,但没有更复杂的了。例如,我实际上设置了 3 个外键,它们都告诉我它们不能为空,即使它们填充了有效值。
我找到了this answer,这表明我的代码是正确的,并且实际上会做我想做的事情(即验证 card_colour_id 是否链接到 CardColour 模型中的实际对象)。
【问题讨论】:
-
您的
CardColour模型是什么样的?你真的应该尝试使用 Ruby 更加地道一点。尝试使用belongs_to :card_colour和validates :card_colour_id, presence: true -
能否也显示您的关联和迁移?
-
我比较新,但有些东西比较混乱:CardColour 似乎是一个合适的模型,也是一个需要填写的列才能使记录有效。
-
关闭,但使用
validates :card_colour, presence: true而不是“card_colour_id”。 -
列应命名为
card_colour_id。
标签: ruby-on-rails ruby-on-rails-4 cloud9-ide