我的问题:我有三个模型:公司、parent和child。childbelongs_toparentbelongs_to公司我需要获取一家公司内某个属性设置为false的所有child。(Parent模型有company_id而Child模型没有。)我正在尝试:我有以下连接:@objects=Parent.joins(:childs).where('parents.company_id'=>current_user.company_id,'childs.foo'=>false)在我看来:(foo是子对象的属性)模型:classCompany:destroy...endclassParen
我正在使用Arels创建查询。在此查询中,我使用了generate_series函数。这是我的代码:defgenerate_seriesArel::Nodes::NamedFunction.new('GENERATE_SERIES',[start_date,end_day,'1day'])enddefstart_dateArel::Nodes::SqlLiteral.new(当我尝试通过generate_series.to_sql进行测试时。我遇到异常:Arel::Visitors::UnsupportedVisitError:Unsupportedargumenttype:Strin
我有这个ActiveRecord总和:@websites=current_user.records.sum(:minutes,:group=>'website',:conditions=>"websiteISNOTNULL")我想将其限制为最高10分钟的总和。有人可以告诉我它的语法吗?提前致谢。 最佳答案 您可以:order按求和列然后:limit到10行,如下所示:@websites=current_user.records.sum(:minutes,:group=>'website',:conditions=>'websiteI
我在使用以下脚本时遇到了一些问题:require'rubygems'require'active_record'require'net/ssh/gateway'gateway=Net::SSH::Gateway.new('myserver.com','myuser',:password=>"mypass")puts"true"ifgateway.active?p=gateway.open('127.0.0.1',3306,3307)classMyClass"mysql",:host=>"127.0.0.1",:username=>"db_user",:password=>"db_pas
我试图在我的记录中编码一个简单的层次结构,但我遇到了一个奇怪的错误。require'rubygems'require'active_record'ActiveRecord::Base.establish_connection(:adapter=>"sqlite3",:database=>":memory:")ActiveRecord::Schema.definedocreate_table:foosdo|t|t.string:name,:null=>falset.integer:parent_id,:default=>nilendendclassFooFooendbar=Foo.cre
在我看来,我有一行如下所示:似乎我不得不经常做这类事情,因为有些字段可以为空。有没有更好的写法?我可以在模型层处理它,但据我所知,那不是真正的模型层功能。 最佳答案 您可以使用delegate事件记录支持的方法。delegate:phone_number,:to=>:person,:allow_nil=>true并直接调用@house.phone_number,也避免了person中间人。如果电话为零,这也将返回零。 关于ruby-on-rails-Rails/ActiveRecord-
我想知道是否有任何方法可以跳过具有nil的属性ActiveRecord上to_json时的值。默认行为是包含一个nil值。有没有办法让这个值不出现? 最佳答案 @lars的回答适用于单个对象,但对于ActiveRecord对象数组,您将不得不遍历数组的每个元素并进行转换。如果每次为该模型调用.to_json或render:json=>时都希望进行此转换,则可以覆盖模型中的as_json函数像这样:classModel..defas_json(options={})super(options).reject{|k,v|v.nil?}e
我有覆盖Ar的查找方法的库代码。我还包含了所有关联类的模块,因此MyModel.find和@parent.my_models.find都可以工作并应用正确的范围。我的代码基于will_paginate的:a=ActiveRecord::Associationsreturning([a::AssociationCollection]){|classes|#detecthttp://dev.rubyonrails.org/changeset/9230unlessa::HasManyThroughAssociation.superclass==a::HasManyAssociationcla
我刚刚创建了一个新的gem(使用bundler)并想添加ActiveRecord支持。所以我将s.add_dependency"activerecord","~>3.0"添加到我的gemspec中。然后我使用Bundler.setup和Bundler.require并认为我现在可以访问ActiveRecord,但我没有。我必须明确使用require"active_record"。知道为什么Bundler.require在那种情况下对我不起作用吗? 最佳答案 首先,如果您要打包gem,donotuseBundler.require.B
我试图在我的应用程序中复制Rails中的资源,但遇到了一些问题。设置是:我有一个用户可以使用的“项目模板”库,然后修改生成的项目。我目前有这样的设置:@temp_item=@template_item.dup@new_item=@user.items.create(@temp_item.attributes)但是我遇到了一个问题,它也试图跨protected属性(即created_at和updated_at)进行复制。我不想单独列出每个属性,所以我的问题是,有没有办法排除在这种情况下复制的属性?谢谢。 最佳答案 将Mischa的好建