Tag: ruby on rails

有没有办法Rails 3.0.x可以默认使用Thin?

我为我的开发/测试环境中的每个应用程序运行Thin webserver。 当我使用Mongrel和Rails 2.x时,我只需要输入script/server来运行我选择的网络服务器。 但是使用Rails 3,我必须每次都指定Thin。 有没有办法让我的Rails应用程序只需输入rails s而不是rails s thin就可以运行Thin?

Rails I18n通过数据库列

我有一个遗留数据库表,其中包含name_en和name_es列,并且想知道在ActiveRecord中根据用户的i18n首选项进行翻译的最佳方法是什么。 我在Rails中看到的i18n实现更倾向于将翻译存储在单独的散列或表中,但我不想改变数据库的结构。 目前在旧的PHP应用程序中,我向mysql查询发送一个参数来替换name_en并返回name_en或name_es AS name以便在我调用行的id时显示。

究竟“config.assets.debug”设置到底是什么?

我已经开始开发简单的rails应用程序了。 经过几个小时的工作后,我注意到删除的css仍以某种方式应用于网页。 为了解决这个问题,我多次执行了以下操作: 停止/启动服务器 使用rails服务器 使用扭矩箱服务器 删除浏览器缓存 但没有变化。 这很奇怪 – 新的css定义已经应用,但我删除的那些仍然存在。 所以,我放弃了,决定创建新项目。 我已经设置了新项目(它的脚手架与第一个脚手架相同),当我打开其中一个视图时,旧项目的样式也被应用了。 我决定再次查看http://guides.rubyonrails.org/asset_pipeline.html并找出该设置 #Expands the lines which load the assets config.assets.debug = false 解决了这个问题。 但这个选项究竟做了什么呢? 当这是真的时,为什么旧​​的项目css被应用?

通过访问原始文件覆盖rails帮助程序

我想使用rails熟悉的助手,但function略有改变。 我看待它的方式,我希望能够做到这样的事情: module AwesomeHelper #… create alias of stylesheet_link_tag to old_stylesheet_link_tag def stylesheet_link_tag(*args) if @be_awesome awesome_stylesheet_link_tag *args else old_stylesheet_link_tag *args end end end 我看到它的方式,我有三个选择: 猴子修补:重新打开rails helper模块。 如果rails团队改变了他们的帮助器模块的名称,我的代码就变成了脆弱的来源。 不是不可克服的,但并不理想。 使用不同的方法名称:试图坚持共轨接口可能是我的垮台。 我的更改可能会成为其他开发人员混淆的根源 分离方法(新):不确定这是否有效,或者它是否会有与1相同的缺点。研究这个,但这可能是一个很好的起点。 所以这里的问题是,我是否坚持使用其中一种次优解决方案,还是有其他方式我没有考虑过? 如果我选择选项3,有没有办法在不直接寻址rails helper模块的情况下执行此操作? (注意:我删除了上下文,因为它没有添加任何问题。)

如何在Rails 3中validation非模型表单?

假设我有一个搜索表单,我想validation关键字的长度。 我希望表单突出显示无效字段(如模型表单)。 我到处寻找,似乎无法找到有关在Rails 3中validation非模型支持的表单的任何有用信息。我已经尝试了可validation的 gem,但这似乎不适用于Rails 3: undefined method `model_name’ for Login:Class. 有任何想法吗?

在数据库中清晰地表示电子商务产品和变体

我有一个我正在建设的电子商务商店。 我正在使用Rails / ActiveRecord,但实际上没有必要回答这个问题(但是,如果您熟悉这些内容,请随时回答Rails / AR)。 商店的要求之一是它需要代表两种类型的产品: 简单的产品 – 这些产品只有一个选项,例如乐队的CD。 它有基本的价格和数量。 有变化的产品 – 这些产品有多种选择,例如有3种尺寸和3种颜色的T恤。 尺寸和颜色的每种组合都有自己的价格和数量。 我过去做过这种事情,做了以下事情: 有产品表,其中包含产品的主要信息(标题等)。 有一个变量表,其中包含每种变体的价格和数量信息。 产品 has_many 变种 。 对于简单的产品 ,它们只有一个关联的Variant 。 有没有更好的方法可以做到这一点?

Rails:模型上的动态列/属性?

我有一个SaaS应用程序,帐户希望在User模型上保存不同类型的信息。 因此,例如,一个帐户可能想要保存年龄和生日,但在另一个帐户中,他们将不会使用这些列,并且希望保存关于头发颜色和高度的信息。 这些只是示例,但我如何构建我的模型和数据库,以便它与“自定义,动态”列一起使用,而不会创建太多空属性。

(Ruby,Rails)SELF在模块和库中的上下文……?

关于在模块或库中使用“SELF”的快速问题。 基本上什么是“SELF”的范围/上下文,因为它与模块或库有关,如何正确使用? 有关我正在讨论的示例,请查看安装了“restful_authentication”的“AuthenticatedSystem”模块。 注意:我知道’self’在其他语言中等同于’this’以及’self’如何在类/对象上操作,但是在模块/库的上下文中没有“自我”。 那么,在没有类的模块中,自我的上下文是什么?

Rails CSRF保护如何工作?

当CSRF令牌不匹配时,Rails会引发InvalidAuthenticityToken 。 但是,从阅读来源 ,我无法弄清楚这是如何实际发生的。 我开始为该课程寻找树: $ ack –ignore-dir=test InvalidAuthenticityToken actionpack/lib/action_controller/metal/request_forgery_protection.rb 4: class InvalidAuthenticityToken :unprocessable_entity 只有两次点击,忽略了评论。 第一个是类定义: class InvalidAuthenticityToken < ActionControllerError #:nodoc: end 第二个是将exception转换为HTTP状态代码。 通过在控制器中调用protect_from_forgery来启用CSRF保护,让我们看一下: def protect_from_forgery(options = {}) self.request_forgery_protection_token ||= :authenticity_token before_filter :verify_authenticity_token, options end 它添加了一个filter: def verify_authenticity_token verified_request? || handle_unverified_request end validation失败时会调用此函数: def handle_unverified_request reset_session end 那么InvalidAuthenticityToken实际上是如何引发的呢?

Ruby中的“等于大于”operator =>是什么?

在Ruby on Rails教程中,我被要求输入: class Post true validates :title, :presence => true, :length => { :minimum => 5 } end 我理解这是做什么的,但我想知道=>运算符是什么。 在PHP-land中,它链接键和关联数组中的值。 这是一回事吗? 它是Ruby运算符还是Rails运算符?