我有两个模型:card
和lane
,其中lane
有许多cards
而card
属于lane
。
def create
lane = lane_find
card = lane.cards.build(card_params)
if card.save
respond_with lane, :include => :cards
else
respond_with({ :errors => card.errors.full_messages }, :status => 422, :location => nil)
end
end
def update
card = Card.find(params[:id])
if card.update_attributes(card_params)
respond_with card.lane
else
respond_with({ :errors => card.errors.full_messages }, :status => 422, :location => nil)
end
end
(注意:lane_find
是一个未在此处显示的私有函数,但它只是Lane.find(params[:lane_id])
)
预期的行为是API客户端在未正确保存时接收422错误代码,并传递错误(例如非唯一或空白)。
奇怪的是,创建动作完全按预期工作,而更新和销毁动作(此处未显示)总是在无效输入时返回204!
在命令行上手动测试表明验证设置正确,card.update_attributes(content: "")
返回false
。
这真让我烦恼!我很想你的反馈意见:))
编辑:card.rb
class Card < ActiveRecord::Base
validates :content, :uniqueness => {:case_sensitive => false}, :length => { minimum: 1 }, presence: true
belongs_to :lane
end