简化示例:
我最近设置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工厂以返回其子类的实例?
我曾尝试致电.reload该Animal工厂创建之后,但它并没有引发重装新(子)类.我知道通常你可以调用superclass.becomes!(subclass)强制更改,但不知道如何以FactoryGirl实际返回转换对象的方式将其放入回调中.
将Twitter API允许你通过他们的媒体添加到您的鸣叫update_with_tweet方法。
我正在使用Sinatra并Twitter设置了所有配置。我能够成功地使用我的应用发布推文。
我的应用程序读取网页,从该页面提取照片,然后应该将它们单独发布到 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。
我有一个Adventure模型,它是a Destination和a 之间的连接表User(并具有其他属性,如zipcode和time_limit).我想创建一个query将返回我所有的Destinations地方的Adventure那间Destination和User目前正试图创建一个Adventure不存在.
应用程序工作时的方式User点击开始一个新Adventure它会创建一个Adventure与user_id被认为User的id,然后运行方法来提供一个随机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)
要确定是否Clojure的名单有任何物品,那岂不是更有效的(空间+内存明智)使用(zero? (count coll))在(empty? coll)它创建了一个序列?