小编kit*_*nky的帖子

RSpec/FactoryGirl - Rails STI - 平等

简化示例:

我最近设置Single Table Inheritance了一个Animal模型.Cat并且Dog是.的子类Animal.

我有一家Animal工厂: factory :animal do type { ["Dog","Cat"] }.sample end

我调用的测试套件几乎无处不在, let(:animal) { Factory.create(:animal) }因为类型Animal与测试无关.由于移动到STI,我在这些动物上执行相等性检查时出错,因为超类Animal是由工厂返回的,但是当关联对象实例化时,Animal它们返回子类.

示例: expect(zoo.animal).to eq(animal)失败: expected: #<Cat:0x007fa01a8cd360 same_other_attributes...> actual: #<Animal:0x007fa01b8d33b8 same_other_attributes...>

有没有办法可以更改Animal工厂以返回其子类的实例?

我曾尝试致电.reloadAnimal工厂创建之后,但它并没有引发重装新(子)类.我知道通常你可以调用superclass.becomes!(subclass)强制更改,但不知道如何以FactoryGirl实际返回转换对象的方式将其放入回调中.

rspec ruby-on-rails single-table-inheritance factory-bot

3
推荐指数
1
解决办法
398
查看次数

Sinatra、Twitter 和 StringIO

Twitter API允许你通过他们的媒体添加到您的鸣叫update_with_tweet方法。

我正在使用SinatraTwitter设置了所有配置。我能够成功地使用我的应用发布推文。

我的应用程序读取网页,从该页面提取照片,然后应该将它们单独发布到 Twitter。我成功地使用Nokogiri.

但是,我无法将这些照片转换为Twitter允许的媒体类型。因为我也在使用urigem,给出这个例子:photo_url = "placekitten.com/300/300",我可以调用media = open(photo_url),这会返回一个StringIO.

但是,当我尝试将新存储的媒体与我的帖子一起发布给Twitter我时,出现了The IO object for media must respond to to_io (Twitter::Error::UnacceptableIO).

我试图弄清楚如何正确格式化/调用图像,以便我可以成功地将其发布到 Twitter。

twitter sinatra stringio

2
推荐指数
1
解决办法
624
查看次数

Rails ActiveRecord基于第三个属性查询关系不存在的位置

我有一个Adventure模型,它是a Destination和a 之间的连接表User(并具有其他属性,如zipcodetime_limit).我想创建一个query将返回我所有的Destinations地方的Adventure那间DestinationUser目前正试图创建一个Adventure不存在.

应用程序工作时的方式User点击开始一个新Adventure它会创建一个Adventureuser_id被认为Userid,然后运行方法来提供一个随机Destination,例如:

Adventure.create(user_id: current_user.id)(它实际上是在做current_user.adventures.new)但同样的事情

我尝试过从写作SQL queries到使用的一些东西.joins.这里有一些例子:

Destination.joins(:adventures).where.not('adventures.user_id != ?'), user.id)

Destination.joins('LEFT OUTER JOIN adventure ON destination.id = adventure.destination_id').where('adventure.user_id != ?', user.id)

sql activerecord ruby-on-rails active-record-query

1
推荐指数
1
解决办法
3698
查看次数

为什么要使用空计数?

要确定是否Clojure的名单有任何物品,那岂不是更有效的(空间+内存明智)使用(zero? (count coll))(empty? coll)它创建了一个序列?

一下,因为文档显示了列表作为示例之一。

clojure

1
推荐指数
1
解决办法
122
查看次数