希望能够整理成文字或者视频分享出来,这样让更多没有办法到现场的人能够受益
#4 楼 @hemengzhi88 很偶然的机会,开始上课思客的课程,然后我说我来实习,然后就 ok 了。
#3 楼 @hw676018683 我这个代码读的比较细,所以能写的东西多。你去试试也一样的
#2 楼 @lyfi2003 这个也不是我所需要的,我要保证的时在一个 A 的 record(例如 a),他所关联的所有 C 的 record 的 name 属性是唯一的。这个只能保证一个 b 所关联的 c 的所有 name 属性的值是唯一的。 也就是下面这种代码的效果。如果采用你的这种验证方式的话,下面的代码是能够通过的
a = A.create
b1 = B.create
b2 = B.create
a.bs << b1
a.bs << b2
b1.cs << C.create(name: "test") #通过
b2.cs << C.create(name: "test") #Error
虽然没有没回复我,不过还是感谢大家。我已经自己把问题解决了。 我在 stackoverflow 上找到一个类似的问题http://stackoverflow.com/questions/8520655/undefined-webrat-methods-in-cucumber/8527309#8527309 首先是说 cucumber 不支持 webrat 了,转而支持 capybara(可以在 bundle install 时看到会自动 install capybara 这个 gem),所以 contain 这个方法不能使用。要使用 capybara 的 have_content 这个方法。 另外 response 这个变量表示的也不是返回的页面,当我使用
expect(response).to have_content("xx")
这个方法时,response 返回的是空字符。 通过查看 capybara 的文档,获取页面使用的是 page 这个变量,这个变量的类型是 Capybara::Session 类型。 由于使用 response 时,里面是空字符,没有任何内容,也就不会是用来获得 response header 中内容的变量,所以我猜想这里的 response 只是一个 ruby 的局部变量,没有任何意义。
再说一下这里为什么不能 include。这是因为 Capybara::Session 没有提供 include 这个方法。
没有人回答我吗?是描述不够清楚?还是啥。。。
觉得楼主第一个递归算法有点问题。二分查找应该有两个出口,一个是查找成功,这个出口再楼主代码中已经出现了。第二个出口是没有查找的数据,这个出口楼主没有。因为楼主代码中另一个出口是通过 array.blank?条件判断的。问题是递归过程中 array 没有变化啊。变化的只有 from 和 to。所以楼主要实现第二个出口,应该要判断 from 和 to 的关系。楼主试试 array 中没有的数据测试试试。应该有 bug