草庐IT

castle-activerecord

全部标签

sql - ActiveRecord has_many 通过多态 has_many

看来rails仍然不支持这种类型的关系并抛出ActiveRecord::HasManyThroughAssociationPolymorphicThroughError错误。我该怎么做才能实现这种关系?我有以下联想:Users1..nArticlesCategoriesn..nArticlesProjects1..nArticles这是订阅模式Subscription1..1UserSubscription1..1Target(polymorphic(Article,CategoryorUser))而我需要根据user#subscriptions通过Subscription#targe

ruby-on-rails - ActiveRecord::Serializer 中的条件侧载数据(基于 Controller 操作)

我在Rails和构建应用程序方面没有太多经验。我尝试使用ActiveModel::Serializers构建API。为特定事件操作有条件地加载数据的最佳方法是什么?我是否必须通过在每次调用时发送查询参数来做到这一点,或者我可以设置includes:trueonlyforspecificactionoranyothersuggestion?classEventsController[:index,:show]before_filter:locate_collection,:only=>:indexskip_before_filter:verify_authenticity_token,:

sql - 在 Rails 3/ActiveRecord 中构建 LIKE 查询时转义 %% 的正确方法

我想将url字段与url前缀(可能包含百分号)相匹配,例如.where("urlLIKE?","#{some_url}%").什么是最Rails的方式? 最佳答案 从Rails版本4.2.x开始,有一个名为sanitize_sql_like的事件记录方法。因此,您可以在模型中执行如下搜索范围:scope:search,->search{where('"accounts"."name"LIKE?',"#{sanitize_sql_like(search)}%")}并像这样调用作用域:Account.search('Test_%')生成

ruby-on-rails - 在 Rails/ActiveRecord 3 中,如何更改 MySQL 的默认主键类型?

在Rails3中,如何将默认主键类型更改为BIGINTUNSIGNEDNOTNULLAUTO_INCREMENTPRIMARYKEY就我而言,我只对MySQL感兴趣。对于Rails2,您可以查看“如何在Rails中使用长ID?”的答案。1然而,在Rails3中,这会引发错误。我不确定那是因为该类不再使用,还是代码需要放在同一个地方。您可以在active_record/connection_adapters/mysql_adapter.rb中看到NATIVE_DATABASE_TYPES常量仍然被定义。在Rails3中实现相同效果的正确方法是什么? 最佳答案

ruby-on-rails - RSpec 失败是因为它认为 ActiveRecord 对象不相等

非常简单的规范...@post.user.should==@user尽管这两个对象除了它们的object_id之外在所有方面都相同,但规范失败了。如果ActiveRecord对象的id相同,则它们应该等于(==)。这些对象是使用factory_girl创建的。我已经确认这两个对象都不是“.new_record?”。比较@post.user.id和@user.id的效果。更重要的是行为不一致。这些测试一直有效,但现在尽管没有任何更改,但它们还是失败了。rails3.1rspec-2.6factory_girl-2.0.5factory_girl_rails-1.1.0jruby1.6.4

ruby - Sinatra/ActiveRecord 无法处理并发请求?

这是我的第一个Sinatra项目,我已经很晚了,我意识到当使用ActiveRecord一次发出多个请求时,我遇到了问题。如果我只提出一个请求,那么每个请求都会独立工作。但是当我同时调用两者时,我会失败。到目前为止,我已经将问题范围缩小到同时存在两个ActiveRecord请求的问题。也许我没有正确设置ActiveRecord?我使用PostgreSQL是因为Heroku使用它,并且不想改变。(这个问题也发生在Heroku上。)这是日志:192.168.1.113--[30/Sep/2012:10:33:00MDT]"GET/version/current?platform=androi

ruby-on-rails - 如何测试 ActiveRecord 创建 block 内的行为?

如何使用rspec测试这样的代码?Foo.create!do|foo|foo.description="thing"end我不想测试对象是否已创建——我想测试是否使用正确的对象调用了正确的方法。相当于测试这个:Foo.create!(description:"thing")用这个:Foo.should_receive(:create!).with(description:"thing") 最佳答案 这就是你想要的吗?it"setsthedescription"dof=doubleFoo.should_receive(:create!

ruby - 将 ActiveRecord 与 DelegateClass 结合使用

使用rails3.2.8我有一个带有几个属性的模型设置classMyModel我有另一个使用上述作为委托(delegate)类的类设置classMyModelPresenter当我像这样创建一个新的MyModelPresenter时:MyModelPresenter.build(Date.today,{:foo=>1})我得到以下回复NoMethodError:undefinedmethod`foo='for#from/Users/me/.rbenv/versions/ree-1.8.7-2011.03/lib/ruby/gems/1.8/gems/activemodel-3.2.8/

ruby-on-rails - Carrierwave 文件上传在 ActiveRecord Create 上验证失败

所以我有一个非常直接的用于图像上传的Carrierwave实现。我已将uploader安装在ActiveRecord模型上:classMenuItem我使用的表单结合了编辑/创建上述MenuItem以及附加文件:"photo"%>@menuitem.active%>在编辑/更新的情况下,一切正常。但是,在New/Create上,我在:photo属性上收到验证错误,它只是说“照片无效”。上传者定义是普通的:classPhotoUploader100,:width=>100})sf.add_save("thumbnail",key,ENV['S3_BUCKET'])bs=Blitline.

ruby-on-rails - ActiveRecord 传递关联删除

我有以下模型:classOrganization:destroyhas_many:products,:through=>:providersendclassProvider:providerendclassProduct:productsend当我创建一个有提供者(没有产品)的组织,然后用destroy删除它时:Organization.find(1).destroyRails3.0.x不会删除关联的提供者,留下不存在的organization_id。这是一种奇怪的行为,我希望那里要么是nil,要么是提供者被删除(这就是我想要做的)。我看到有传递关联has_many:products: