草庐IT

ruby-on-rails - 在 ActiveRecord 中,如何指定一个在页面持续时间内只计算一次的类属性?

假设我有一个名为Apples的ActiveRecord,我想要一个类方法来计算数据库中每个苹果的总价,如下所示:defApples.total_priceApples.sum(:price)end这是我在我的一个View中使用的一种方法来制作饼图。所以,像这样:Apples.brand("reddelicious").sum(:price)/Apples.total_price=%ofpiechartApples.brand("fuji").sum(:price)/Apples.total_price=饼图的另外%Apples.total_price被重复调用,但此时值不会改变。A)R

ruby-on-rails - class_eval 的类级变量的替代方案?

我对使用class_eval的Ruby变量范围的最佳实践有疑问。在这段代码中,在class_evalblock中,局部变量first和second是未定义的。defparent_method(opts={})first=opts[:percent]second=(10*first).to_iSecondClass.class_evaldodefsecond_method;return{:a=>first,:b=>second};end;endend这似乎是一个范围界定问题,因为我发现让它起作用的唯一方法是创建第一类和第二类级别的变量:defparent_method(opts={})@

Ruby:访问类实例的类常量

我有一个如下所示的类:classFooMY_CONST="hello"ANOTHER_CONST="world"defself.get_my_constObject.const_get("ANOTHER_CONST")endendclassBar获取const_get未初始化常量ANOTHER_CONST(NameError)假设我只是在Ruby范围内做一些愚蠢的事情。我目前在测试这段代码的机器上使用Ruby1.9.3p0。 最佳答案 现在工作:classFooMY_CONST="hello"ANOTHER_CONST="world

ruby-on-rails - 获取从给定类派生的类列表

我想知道是否有可能获得从给定的Class派生的类的列表。我知道了,有回调Class::inherited,它将“在创建当前类的子类时调用”。这种方法有两个问题:当我不是此类的生产者时(也就是说,我必须对其进行monkeypatch),我通常无法确保在创建第一个派生类之前应用我的monkeypatch。在完美的世界中,无论类是否已经初始化,我都会得到类的列表,而在实例化类时实际调用回调。我明白,RTTI可能不是检索我需要的信息的最佳方式(因为上面的2.)。有人会建议另一种方法吗?静态代码分析?任何?如果有任何想法,我将不胜感激。比如说,我的目录中有所有感兴趣的代码(换句话说,我对我的类感

ruby-on-rails - 如何检查参数是模型的实例还是 Rails 中的类?

我有一个辅助方法,可以为资源生成“crud”链接。现在它只处理编辑和销毁。但我想重构它,以便在传递模型类而不是实例时创建一个new链接。期望的输出:>crud_links_for_resource(Product)>{:new=>'Createanewproduct.'}检查变量是模型类还是实例类的最佳方法是什么?我想过使用ducktyping(resource.respond_to?:new_record?)但有更好的方法吗?modulePermissionsHelper#Generatesahashoflinkstoeditordestroyaresource#@param[Act

ruby - 你如何使用来自不同文件的类?

我正在尝试使用来自不同文件的类。something.rbclassSomethingdefinitializeenddefgetText'Someexampletext'endend另一个.rbclassAnotherendsomethingVar=Something.newputssomethingVar.getText这给了我错误/usr/bin/ruby-e$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)/home/chris/RubymineProjects/untitled1/another.rb/home/chr

ruby - 描述ruby中的类关系

我从来没有做过任何直接的ruby​​编码——只用过Rails框架。除了继承关系,我不知道如何描述类之间的关系。例如,一个School对象可能有许多Student对象。我希望能够调用“myschool.student[2].first_name”和“mystudent.school.address”之类的电话可能是我将OOP与关系数据库的元素混淆了,很抱歉,如果我跑题了。 最佳答案 我不是100%确定这里的问题是什么...对于第一个例子,myschool.students[2].first_name,你的School类需要studen

ruby - 在 Ruby 的类范围内声明 "instance"变量有什么缺点?

我几乎从未在Ruby代码中看到过这一点,但它似乎是有效的:classFoo@bar="bar"defself.print_barputs@barendend我对上面的解释是@bar是Foo的实例变量,它是Class的单例(?)实例.这似乎不同于类变量(例如,@@baz),后者在类范围和实例范围内都可以访问。像上面代码片段这样的代码有什么缺点(如果有的话)?或者它是完全合理的代码? 最佳答案 是的,这是完全正确的。它的使用也非常广泛,通常推荐使用范围非常大的类变量(类、类的所有实例、所有子类、所有子类的所有实例,……)。没有缺点。类是

ruby-on-rails - 使用 Twitter Bootstrap Carousel 激活第一个项目的类

我正在努力让Twitter轮播正常工作:我想将.active类添加到第一个.itemdiv。.carousel-inner-@photos.eachdo|photo,index|.item{class:"#{"active"ifindex==0}"}=image_tag(photo.image_url,class:"carousel-photo")这不起作用,因为它没有将.active类添加到循环的第一个元素。如何仅将.active类添加到循环的第一个元素? 最佳答案 得到答案:这里需要用到.each_with_index方法:.c

ruby - 在 Ruby 中,有没有办法找到响应方法调用的类?

所以,在Ruby中,如果我有一个看起来像(非常象征性)的类层次结构ABC对象并且在C类中定义了一个方法"foo",是否有一些内省(introspection)让我确定C是定义响应A.new.foo的方法的类吗? 最佳答案 是的...做A.new.method(:foo).owner。它会给你C类。阅读#owner. 关于ruby-在Ruby中,有没有办法找到响应方法调用的类?,我们在StackOverflow上找到一个类似的问题: https://stacko