Ruby on rails 为什么我的Rails自定义验证器不能工作?
我正在创建一个商店,允许用户购买贺卡生日快乐,情人节 我有两种型号:卡片和收信人 准材料 我没有接受者控制器,但我想我不需要 我想在购买卡的表单中验证收件人模型中的字段Ruby on rails 为什么我的Rails自定义验证器不能工作?,ruby-on-rails,validation,Ruby On Rails,Validation,我正在创建一个商店,允许用户购买贺卡生日快乐,情人节 我有两种型号:卡片和收信人 准材料 我没有接受者控制器,但我想我不需要 我想在购买卡的表单中验证收件人模型中的字段 我已经尝试验证与之关联的\u并添加我自己的验证程序。我只需要验证我的收件人客户信息。因为您从未保存@card,请检查您的创建操作并尝试查找问题。此代码有很多错误:1看起来您使用的是嵌套属性,但嵌套属性不适用于属于关系。2在您的示例3 if card.save而不是@card.save4中,没有接受嵌套的属性。我在card_参数中
我已经尝试验证与之关联的\u并添加我自己的验证程序。我只需要验证我的收件人客户信息。因为您从未保存@card,请检查您的创建操作并尝试查找问题。此代码有很多错误:1看起来您使用的是嵌套属性,但嵌套属性不适用于属于关系。2在您的示例3 if card.save而不是@card.save4中,没有接受嵌套的属性。我在card_参数中发现另一个无效语法:recipient_attributes:[:name,:email]
class Card < ActiveRecord::Base
belongs_to :recipient
def valid_name
if @recipient && @recipient.name.nil?
@card.errors.full_messages.push("Name can't be blank")
end
end
validate :valid_name
validates_associated :recipient
validates :recipient, presence: true
validates :note, length: { in: 1..200 }
class Recipient < ActiveRecord::Base
has_one :card
validates :name, presence: true
end
def new
@card = Card.new
@card.build_recipient
end
def create
@card = Card.new(card_params)
if @card.save
flash[:notice] = "Your card was successfully added to your cart!"
redirect_to :back
else
flash[:danger] = "Something was wrong"
render 'new'
end
end
def card_params
params.require(:card).permit(:note, :amount, :recipient_attributes:[:name, :email])
end