Tag: ruby on rails

为什么我们要避免在rails中使用类变量@@?

为什么我们要避免在rails中使用类变量@@? 这有什么安全漏洞吗? 请回答,因为我是新的rails。 我正在使用实例变量@variable_name 。 我试过一次@@variable_name 。 我只知道类变量是, 类变量在对象之间是可共享的 但我真的想知道为什么我们要避免在rails中使用类变量@@?

为什么在后钩中添加“sleep 1”会导致此Rspec / Capybara测试通过?

我使用的是rails 4.0.5,rspec 2.14.1,capybara 2.2.1,capybara-webkit 1.1.0和database_cleaner 1.2.0。 我通过以下function测试看到一些奇怪的行为(模拟用户在post上查看评论,将鼠标hover在图标上以显示菜单,然后单击菜单项以删除评论): let(:user){create(:user)} let(:post){create(:post, author: user)} let!(:comment){create(:comment, post: post, author: user)} … it “can delete a comment” do assert(page.has_css? “#comment-#{comment.id}”) find(“#comment-#{comment.id}-controls”).trigger(:mouseover) find(“#comment-#{comment.id} .comment-delete a”).click assert(page.has_no_css? “#comment-#{comment.id}”) end 这个测试大约80%的时间都失败了,总是由于某些记录从数据库中检索为nil – 我得到NoMethodError: undefined method X for nil:NilClass ,对于各种X值。有时nil是正在评论的删除,有时它是评论附加的post,有时它是评论/post的作者。 如果我在测试结束时添加sleep 1 ,它会通过: it “can delete its own comment” do assert(page.has_css? “#comment-#{comment.id}”) find(“#comment-#{comment.id}-controls”).trigger(:mouseover) find(“#comment-#{comment.id} […]

Google地图,Ruby on Rails,使用一个标记缩放级别

我正在使用apneadiving / Google-Maps-for-Rails添加谷歌地图支持(感谢真棒gem) 我发现了一个轻微的故障,这很可能是我的错。 当有多个标记时,auto_zoom很有效。 但是,当只有一个标记时,它会放大到不同的最大级别。 “zoom”仅在auto_zoom为false时有效,因此这不是我想要的。 因此,您可以使用“maxZoom”,但现在用户无法手动放大超出该点,这不是我想要的。 有没有解决的办法? 我的解释有意义吗? 这是Google Maps API的限制吗? 谢谢…

查询,无法选择列数

Tag.joins(:quote_tags).group(‘quote_tags.tag_id’).order(‘count desc’).select(‘count(tags.id) AS count, tags.id, tags.name’) Build query: SELECT count(tags.id) AS count, tags.id, tags.name FROM `tags` INNER JOIN `quote_tags` ON `quote_tags`.`tag_id` = `tags`.`id` GROUP BY quote_tags.tag_id ORDER BY count desc 结果: [#, … , #] 它不会为我返回计数列。 我怎么才能得到它?

如何从Rails中的date_select或select_date获取日期?

使用select_date会给我一个带有year , month和day属性的params[:my_date] 。 如何轻松获取Date对象? 我希望像params[:my_date].to_date这样的东西。 我也很高兴使用date_select 。

在Rails中,用英语显示两个日期之间的时间

在Rails项目中,我想找到两个日期之间的差异,然后用自然语言显示它。 就像是 >> (date1 – date2).to_natural_language “3 years, 2 months, 1 week, 6 days” 基本上这是ruby。 谷歌和Rails API没有发现任何东西。 我发现了一些可以让你在一个单元中产生差异的东西(即两个日期之间有多少个星期)但不能准确计算出几年,几个月,几周,几天的东西。

Ruby on Rails中和之间的区别是什么?

它与输出有关吗? 因此, 用于在执行代码后输出, 仅用于执行代码?

创建具有树结构的模型

我有树结构的类别。 我试图通过为每个人定义父母来将他们联系在一起。 (我无法弄清楚如何调用属性parent所以它现在只是category ,但它意味着父级)。 class Category < ActiveRecord::Base has_one :category # the parent category end 但这种关系最终走错了路。 getter函数在子类别上(正确),但category_id存储在父类中: parent = Category.create(:name => “parent”) child = Category.create(:name => “child”, :category => parent) parent.id # 1 child.id # 2 child.category_id # nil parent.category_id # 2 child.category.name # “parent” (!!) 父母需要能够有多个孩子,所以这不会起作用。

你可以在没有源的情况下分发Ruby on Rails应用程序吗?

我想知道是否可以在没有源代码的情况下分发用于生产的RoR应用程序? 我在SO上看过这篇文章 ,但我的情况有点不同。 这将是一个由具有一些线索的人管理的应用程序,所以我很酷,仍然需要在客户端设置Apache / Mongrel / MySQL。 我真正想要的是保护源。 编码似乎是分发PHP应用程序的一种流行方式(例如: Helpspot )。 我发现了这些潜在的解决方案: Zenobfuscate – 然而,并不支持所有类型的Ruby代码,所以这一点很重要 Ruby编码器 – 可能是最好的选择,因为他们的PHP编码器看起来没问题(但我还没有尝试过)但它还没有。 我之前使用过IONcube for PHP并且运行良好,但IONcube似乎并不感兴趣 。 弹弓 – 它在其他SOpost中被提及,但它解决了我的一个不同的问题,源仍然是可见的。 RubyScript2Exe – 来自doco,它不是生产就绪的,所以重要的是。 我听说可能使用JRuby并分发字节码可能是实现这一目的的一种方法,但我从未使用过JRuby所以我不确定涉及到什么。 任何人都可以提供任何想法和/或已知示例吗? 理想情况下,我也喜欢拥有某种自动构建方案。

HEROKU – 无法运行git push heroku master

我运行命令 heroku create –stack cedar git push heroku master 但它给了我一个错误: > Counting objects: 144, done. Delta compression using up to 2 threads. > Compressing objects: 100% (128/128), done. Writing objects: 100% > (144/144), 50.16 KiB, done. Total 144 (delta 23), reused 0 (delta 0) > > —–> Heroku receiving push > —–> Ruby/Rails app detected […]