Bre*_*ers 7 rails-console ruby-on-rails-3 railstutorial.org dependent-destroy
很确定这些测试工作正常.通过删除has_many:relationships上的dependent :: destroy选项以及user.rb中的has_many:reverse_relationships来解决它们.
想要分享我所做的事情以防其他人通过Michael Hartl的Rails教程第2版,第11章练习.
这个练习产生了一些问题(见本文的底部).如果有人能提供帮助,那就太好了.
第11章,练习1:
按照清单10.15中的示例,在关系模型(清单11.4和清单11.16)中添加依赖关系:destroy的测试.
这是我的测试: spec/models/user_spec.rb
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar")
end
subject { @user }
[...code omitted...]
describe "relationship associations" do
let(:other_user) { FactoryGirl.create(:user) }
before do
@user.save
@user.follow!(other_user)
other_user.follow!(@user)
end
it "should destroy associated relationships" do
relationships = @user.relationships
@user.destroy
relationships.should be_empty
end
it "should destroy associated reverse relationships" do
reverse_relationships = @user.reverse_relationships
@user.destroy
reverse_relationships.should be_empty
end
end
Run Code Online (Sandbox Code Playgroud)
这个练习产生了几个问题:
问题1:
我最初的测试是关系.应该be_nil reverse_relationships.should be_nil
但是,尽管没有用户存在,但实现了数组仍在返回.那么,当用户不存在并且调用关联方法时,结果仍然是数组?这总是如此吗?
问题2:
我想在rails控制台中为用户删除关系和reverse_relationship.
我试过这个
> user = User.first
> user.relationships
# returns a bunch of relationships
> user.relationships.destroy
=> []
> user.relationships
# returns same bunch of relationships
Run Code Online (Sandbox Code Playgroud)
我如何永久地破坏关系?在控制台中探索时似乎很有用.
谢谢!我还是Rails的新手
我也是一个 ruby/rails 菜鸟。
问题 1:搜索rubyonrails.orghas_many并显示
返回所有关联对象的数组。如果没有找到,则返回一个空数组。
附带说明一下,您可以测试 nil 和empty:
relationships.present?.should be_false
Run Code Online (Sandbox Code Playgroud)
问题 2:user.relationships.destroy需要一个 :id
user.relationships.destroy '1'
Run Code Online (Sandbox Code Playgroud)