gpt4 book ai didi

ruby-on-rails - validates_associated 和 validates_presence_of 没有按预期与 rspec 一起工作?

转载 作者:数据小太阳 更新时间:2023-10-29 07:02:33 30 4
gpt4 key购买 nike

我有一个用户模型和一个友谊模型。

class Friendship < ActiveRecord::Base
belongs_to :sender, :class_name=>'User', :foreign_key=>'sender_id'
belongs_to :receiver, :class_name=>'User', :foreign_key=>'receiver_id'

validates_presence_of :receiver_id, :sender_id
validates_associated :receiver, :sender
end

class User < ActiveRecord::Base
has_many :sent_friendships, :class_name => "Friendship", :foreign_key => "sender_id", :dependent => :destroy
has_many :received_friendships, :class_name => "Friendship", :foreign_key => "receiver_id", :dependent => :destroy
end

我的 rspec 测试之一是

describe Friendship do

before(:each) do
@valid_attributes = {
:sender_id => 1,
:receiver_id => 2,
:accepted_at => nil
}
end

it "should not be valid with non-existant receiver_id" do
f = Friendship.new(@valid_attributes)
f.receiver_id = 99999
f.should_not be_valid
end
end

测试不应该是有效的,因为没有 user_id 9999 的用户。但是测试表明友谊模型是有效的。

为什么会这样?

编辑:

但我想像上面提到的那样进行测试 -> 而不是直接分配发件人。这不可能吧??

最佳答案

如果您希望您的模型以这种方式工作,请更改:

validates_presence_of :receiver_id, :sender_id

为此:

validates_presence_of :receiver, :sender

关于ruby-on-rails - validates_associated 和 validates_presence_of 没有按预期与 rspec 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752921/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com