我有这样一个sql:SELECTTOP1field_name*FROMtable_name我想把它转换成rails中的activerecord。 最佳答案 该代码无法完成工作?YourModel.select(:field_name).first或YourModel.select(:field_name).order('iddesc').first 关于ruby-on-rails-rails-activerecordSELECTTOP1field_name*FROMtable_name,
我是Rails的新手,我想根据不同的GET参数(过滤和排序)进行选择查询。我可以添加一些条件来在代码中查找吗?例如:ifparams[:ratings]Movie.where(:rating=>params[:ratings].keys)end然后添加排序和其他where条件。我怎样才能做到这一点?也许有更好的方法动态修改选择查询(无需制作SQL字符串)。谢谢。 最佳答案 where、order...方法返回ActiveRecord::Relation对象,因此您可以继续调用更多查询方法:query=Movieif(params[:
我正在尝试通过activeRecord使用rails“where”查询。我的查询包含多个条件,其中一个是数组:User.where("state=?ANDsalary>=?",["AL","MI","MA"],1000)问题是,当我运行它时(无论是从Controller还是从控制台),我都没有收到任何错误,但看起来像是一个空的ActiveRecord对象。如果我在数组中只有一个值,它工作正常。它的多个值(我知道存在)不返回预期值。SELECT`users`.*FROM`users`WHERE(salary>=1000ANDstate="AL","MI","MA")我可以改用散列,但我不
我有这条路线可以为某个提示创建收藏夹:deffavorite@tip=Tip.find(params[:id])Favorite.create(user:current_user,tip:@tip)redirect_to:action=>"show",:id=>@tip.idend我希望它更像一个开关。所以:如果用户对某个提示的收藏已经存在,那么它应该删除这个收藏。如果它是用户和提示的新组合,它应该使用这些值创建一个新的收藏夹。最好和最漂亮的方法是什么? 最佳答案 试试这个,我认为这是最简洁的解决方案:deffavorite#Sin
我遇到了Minitest和关联ActiveRecord模型(Rails.4.2.3)的问题。这是两个模型:#vanguard_fund.rbclassVanguardFund非常简单。现在这里是固定装置:#vanguard_funds.ymlvf1:name:VanguardFund1benchmark_fund:bm1#benchmark_funds.ymlbm1:name:BenchmarkFund1现在我在运行任何测试时遇到以下错误:ERROR["test_#name_returns_the_name_of_the_VanguardFund",BaseTest,2015-06-0
我试图通过最近创建的相关记录(通信)的created_at列列出所有用户。到目前为止我所拥有的:User.includes(:communications).order('communications.created_atISNULL,communications.created_atasc')实际上,desc如我所料地工作。问题是顺序颠倒了,我尝试顺序asc。这似乎是因为用户可以有许多通信,查询返回用户的列表,顺序是第一个通信创建的顺序,而不是最近的。我如何修改查询以按asc和desc顺序定位最近创建的关联记录?谢谢你的时间。 最佳答案
我有两个类:classPost问题是是否有更好的方法来知道调用类方法的关联对象(post)的id。一种方法(上面使用的)是:post_id=self.new.post_id。我敢打赌有一种更简洁的方法,我不必为了获取post_id而创建对象。 最佳答案 直接回答你的问题,Comment.scope_attributes将返回Comment的当前范围将设置的那些属性的散列。您可以像这样测试关联对此的影响虽然我不确定我是否会使用它-拥有一个只能在特定形式的范围内调用的类方法似乎有点奇怪。 关
我有以下关联:Artisthas_manySongs。因此,我可以通过以下方式获取艺术家的歌曲:artist.songs但是,我只想获取歌曲的流派:artist.songs.pluck(:genre)但是,这种类型可能会在结果中出现多次;我只想获得独特的流派值(value)。不幸的是,pluck在这里没有任何帮助,因为它返回一个数组,并且在其上调用uniq不会调整ActiveRecord查询,但是普通的数组#uniq.我可以这样做:artist.songs.select(:genre).uniq.pluck(:genre)但我觉得一定有更好的办法。P.S.:然而,从一些最小的基准测试来
我想创建所有公司事件的可视化时间表。时间轴的HTML是使用loop构建的。为简单起见,我们假设两种模型Hire和Deal。两个模型都有一个date属性和一些模型特定的属性。如何合并两个模型的ActiveRecord结果,然后按dateorder合并的散列,形成一个我可以循环的散列? 最佳答案 好吧,假设查询Hire和Deal模型的结果是一个对象数组(集合),那么您只需使用+将它们连接成一个新数组并按date和sort_by对项目进行排序:combined=(Hire.all+Deal.all).sort_by(&:date)或使用c
我正在尝试执行这样的查询:Widget.find(:all,:conditions=>["namelike%awesome%"])但是,我从sanitize_sql中收到“格式错误的字符串”异常,将“%”指定为问题。如何执行此查询? 最佳答案 试试这个语法:term="awesome"Widget.all(:conditions=>["nameLIKE?","%#{term}%"]) 关于sql-如何在:conditionsargumenttoActiveRecord.查找中使用%?,我