у меня есть модель
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 внешних ключа, и все они говорят мне, что они не могут быть пустыми, даже если они заполнены допустимыми значениями.
Я нашел этот ответ, который предполагает, что мой код правильный и будет на самом деле делать то, что я хочу (т.е. проверить, что card_color_id ссылается на фактический объект в модели CardColour).
CardColour
модель? Вы действительно должны попытаться быть немного более идиоматичным с Ruby. Попробуйте пойти сbelongs_to :card_colour
иvalidates :card_colour_id, presence: true
- person Orlando   schedule 17.06.2016validates :card_colour, presence: true
вместо card_color_id. - person Michael Chaney   schedule 17.06.2016card_colour_id
. - person Michael Chaney   schedule 17.06.2016