草庐IT

ruby-on-rails - 博客条目和评论的倒序显示,Ruby on Rails

我是Rails的新手,所以在这里需要一些帮助。我已经按照几个教程创建了一个带有评论甚至一些AJAX花哨功能的博客,我被困在一些我希望很容易的事情上。博客和评论的默认显示是先列出最早的。我如何反转它以在顶部显示最新条目和最新评论。真的不知道这是Controller还是模型的功能。我已经做了一些定制,所以如果有帮助的话,这里是Controller.rb文件的代码。评论ControllerclassCommentsController帖子管理员classPostsController[:index,:show]#GET/posts#GET/posts.xmldefindex@posts=Po

ruby-on-rails - rails : Using CanCan to define multiple roles depending on instances of single Model?

我目前一直在研究如何根据我们想要的每个条件来分离CanCan的角色。在我们的应用程序中,有很多类别(例如数学、英语、历史等),每个类别中都有很多类(class)。每个用户可以在每个类别中扮演许多不同的角色。例如,约翰可以是数学的“读者”,这意味着他可以阅读所有数学类(class)。约翰也可以是英语的“作家”,这意味着他可以阅读所有英语类(class),在类别英语中创建类(class),并仅编辑/删除他创建的英语类(class)。如果这些是John仅有的角色,他将无法在导航栏中看到类别历史记录,并且将被拒绝访问历史记录中的类(class)。这些是关系的建立方式:classUser在mod

ruby-on-rails - pg_search 使用 associated_against 给出错误 "column [model_name].[associated_column_name] does not exist"

我正在尝试使用pg_search来搜索关联模型。当我运行搜索时,出现错误“PG::Error:ERROR:columnplans.namedoesnotexist”。我正在“计划”模型中运行搜索,并尝试针对“地点”与列“名称”的关联进行搜索。连接这些的has_many:through模型是多态的。不知何故,sql查询将两者结合起来并抛出错误。我已经运行了associated_against迁移(railsgpg_search:migration:associated_against),搜索了文档,并寻找其他有错误的人,但一无所获,一定是我只是忽略了一些东西。如果我只是删除plan.rb

ruby-on-rails - ruby rails : Unit Testing non activerecord models and still load fixtures

我可能遗漏了一些东西,但我陷入了这种情况:我有一个非activerecord模型,我想对其进行测试。我从Test::Unit::TestCase派生了它的测试用例类。但是,模型的测试用例类在其自身内部使用了其他activerecord模型类,我想为它们加载固定装置。我的问题是fixtures类方法仅在我从ActiveSupport::TestCase继承测试用例类时才可用(它在ActiveRecord::TestFixtures包含在ActiveSupport::TestCase中)。任何帮助,因为运行测试都会给我错误:未定义的方法“fixtures”(这是可以理解的),如果我从Act

ruby-on-rails - 我应该将我的数据库查询测试放在 Rails 中的什么位置?

我来自Spring/hibernate背景。我注意到Rails没有dao和服务层。这确实加快了开发速度,但有时我不知道将测试放在哪里。现在,我一直在将我的模型方法和验证测试放在主要模型规范中。这个文件已经相当大了。测试查询的“标准”位置在哪里?我可以想象自己制作了大量固定装置/虚拟数据以确保我的查询按预期工作(可能是一个更好的主意,因为我是Rails的新手)。这些对于基本模型逻辑和验证测试来说并不是真正需要的。如果您能提供一些关于将这些测试放在哪里的建议,使用rails测试查询的最佳方法(尤其是具有多个连接的查询!),也许还有一些基本准则,说明它与使用DBunit/spring进行测试

ruby-on-rails - 从 Virtus.model 动态扩展时使用 boolean 属性辅助方法

假设我有一个带有boolean属性active的Virtus模型User:classUserincludeVirtus.modelattribute:active,Boolean,default:false,lazy:trueend然后我可以使用辅助方法active?:User.new.active?#=>falseUser.new(active:true).active?#=>true但是当我尝试从Virtus.model中扩展并动态定义一个boolean属性时:classUser;enduser=User.newuser.extend(Virtus.model)user.attri

ruby-on-rails - 我在 rails generate devise :install 之前运行了 rails generate devise MODEL

我在运行初始Devise生成器之前不小心添加了我的Devise模型。我先运行的代码:$railsgeneratedeviseMODEL初始设计生成器(我应该先运行的):$railsgeneratedevise:install我现在有一个名为Model的设计Controller,它不允许我运行“rakedb:migrate”错误:rakeaborted!Userdoesnotrespondto'devise'method.Thisusuallymeansyouhaven'tloadedyourORMfileorit'sbeingloadedtoolate.Tofixit,besureto

ruby-on-rails - rails/事件记录 : save changes to a model's associated collections

我是否必须保存对模型集合中单个项目的修改,或者是否有一种方法可以在我保存模型时调用以保存它们。#save似乎没有这样做。例如:irb>rental=#...#=>#irb>rental.dvd#=>#,sale_price:#>irb>rental.dvd.copies+=1#=>21irb>rental.save#=>trueirb>rental.dvd#=>#,sale_price:#>irb>Dvd.find_by_title('TheWomenofSummer')#=>#,sale_price:#>在上面的例子中,租赁的DVD副本似乎没有更新数据库中的副本(注意不同的副本数)。

ruby-on-rails - Rails 型号 : Name -- First, 最后

我是Rails的新手,正在为用户开发一个带有Profile模型的Rails3应用。在配置文件模型中,我希望有一个“名称”条目,并且我希望能够使用简单的语法访问它的逻辑变体,例如:user.profile.name="JohnDoe"user.profile.name.first="John"user.profile.name.last="Doe"这可能吗,还是我需要坚持使用“first_name”和“last_name”作为我在这个模型中的字段? 最佳答案 有可能,但我不推荐。如果我是你,我会坚持使用first_name和last_

ruby-on-rails - Ruby 中的存储库或网关模式

如何在Ruby中实现存储库或网关模式?我来自C#世界,我通常抽象出我的数据访问,但是使用ActiveRecord作为Ruby中的默认数据访问机制,如何实现这一点并不明显。我通常在C#中做的是使用抽象接口(interface),然后为ECFustomerRepository、NHibernateCustomerRepository和InMemoryCustomerRepository以及依赖具体实现在这种情况下我注入(inject)了匹配的具体实现。那么现在,Ruby方式是什么?!据我所知,在动态语言中你不需要像DI(依赖注入(inject))这样的东西。而且Ruby具有强大的语言特性,