Questions tagged «ruby-on-rails-3»

Ruby on Rails是一个用Ruby编写的开源Web开发框架。Ruby on Rails遵循约定胜于配置的原则,使您不必重新进行发明以保持生产力。仅将此标记用于Rails 3特定问题,并标记这些问题[ruby-on-rails]。

3
通过Rails了解has_one / has_many的:source选项
请帮助我了解关联的:source选项has_one/has_many :through。Rails API的解释对我来说意义不大。 “指定源使用的源关联名称has_many :through => :queries。仅当无法从关联中推断出该名称时,才使用它。除非指定a,否则has_many :subscribers, :through => :subscriptions它将查找:subscribers或:subscriberon 。”Subscription:source

5
在Ruby on Rails中重写setter方法的正确方法是什么?
我正在使用Ruby on Rails 3.2.2,并且我想知道以下内容是否是“正确” /“正确” /“确定”方式来覆盖我的class属性的setter方法。 attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self[:attribute_name] = value end 上面的代码似乎按预期工作。但是,我想知道,通过使用上面的代码,将来我是否会遇到问题,或者至少会遇到Ruby on Rails“我期望” /“可能发生”的问题。如果那不是重写setter方法的正确方法,那么正确的方法是什么? 注意:如果我使用代码 attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self.attribute_name = value end 我收到以下错误: SystemStackError (stack level too deep): actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70





7
rake db:schema:load与迁移
这是一个非常简单的问题-如果应用程序变得越来越复杂,迁移会变得缓慢而麻烦,并且如果我们可以rake db:schema:load调用更清洁的方法,那么为什么根本不存在迁移呢? 如果上面的答案是迁移用于版本控制(逐步记录对数据库的更改),那么随着应用变得越来越复杂且rake db:schema:load使用量越来越大,它们是否继续保持其主要功能? 警告: 从这个问题的答案:rake db:schema:load 将删除生产服务器上的数据,因此在使用它时要小心。

12
漂亮打印哈希的最佳方法
我有一个带有嵌套数组和哈希的大型哈希。我想简单地将其打印出来,以使其对用户“可读”。 我希望它有点像to_yaml-可读性很强-但看上去还是高科技。 最终,最终用户将需要读取这些数据块,因此需要对它们进行干净的格式化。 有什么建议?


2
在Rails和PostgreSQL中完全忽略时区
我正在Rails和Postgres中处理日期和时间,并遇到了这个问题: 该数据库位于UTC中。 用户在Rails应用程序中设置选择的时区,但这仅在获取用户本地时间以比较时间时才使用。 用户存储时间,例如2012年3月17日晚上7点。我不希望时区转换或时区被存储。我只希望保存该日期和时间。这样,如果用户更改了时区,它将仍然显示2012年3月17日晚上7点。 我仅使用用户指定的时区来获取用户本地时区中当前时间“之前”或“之后”的记录。 我目前正在使用“没有时区的时间戳”,但是当我检索记录时,rails(?)会将它们转换为应用程序中的时区,这是我所不希望的。 Appointment.first.time => Fri, 02 Mar 2012 19:00:00 UTC +00:00 因为数据库中的记录似乎是UTC格式的,所以我的建议是获取当前时间,并使用'Date.strptime(str,“%m /%d /%Y”)'删除时区,然后执行查询: .where("time >= ?", date_start) 似乎必须有一种更简便的方法来忽略周围的时区。有任何想法吗?

7
在现有的Rails列中为布尔值添加:default => true
我在SO上看到了一些关于将默认布尔值添加到现有列的问题(即这个问题)。所以我尝试了这个change_column建议,但我一定做得不对。 我试过了: $ change_column :profiles, :show_attribute, :boolean, :default => true 哪个返回 -bash: change_column: command not found 然后我跑了: $ rails g change_column :profiles, :show_attribute, :boolean, :default => true ...和 $ rails change_column :profiles, :show_attribute, :boolean, :default => true 然后跑了rake db:migrate,但是价值:show_attribute仍然存在nil。在我上面提到的问题中,它说在PostgreSQL中需要手动更新。由于我使用的是PostgreSQL,因此在create_profiles迁移中添加了以下内容: t.boolean :show_attribute, :default => true 有人可以告诉我我在做什么错吗?

10
在Rails 3应用程序中添加页面特定JavaScript的最佳方法?
Rails 3具有一些不引人注目的JavaScript,这非常酷。 但是我想知道最好的方法是为特定页面包含其他JavaScript。 例如,我以前可能做过的地方: <%= f.radio_button :rating, 'positive', :onclick => "$('some_div').show();" %> 我们现在可以通过类似 <%= f.radio_button :rating, 'positive' %> # then in some other file $('user_rating_positive').click(function() { $('some_div').show(); } 所以我想我的问题是在哪里/如何包含该JavaScript?我不想填写application.js文件,因为此JavaScript仅适用于该视图。我应该以某种方式为每个页面包含一个自定义JavaScript文件,还是将其粘贴到标题所要查找的实例变量中?


11
在Rails中创建唯一令牌的最佳方法?
这就是我正在使用的。令牌不必一定要猜测,它更像是一个短网址标识符,而不是其他任何东西,我想使其简短。我遵循了一些我在网上找到的示例,如果发生碰撞,我认为下面的代码将重新创建令牌,但是我不确定。不过,我很好奇看到更好的建议,因为这样的感觉有些粗糙。 def self.create_token random_number = SecureRandom.hex(3) "1X#{random_number}" while Tracker.find_by_token("1X#{random_number}") != nil random_number = SecureRandom.hex(3) "1X#{random_number}" end "1X#{random_number}" end 我的令牌数据库列是唯一索引,我也在validates_uniqueness_of :token模型上使用,但是由于这些是根据用户在应用程序中的操作自动创建的(它们实际上是下订单并购买令牌)而批量创建,因此让应用抛出错误是不可行的。 我想,我也可以减少冲突的机会,在末尾附加另一个字符串,这些字符串是基于时间生成的,或者类似的东西,但是我不希望令牌太长。

7
Rails 3.1和图像资产
我已将所有用于我的管理主题的图像放在资产文件夹中的名为admin的文件夹中。然后,我像正常的ie链接到它。 # Ruby image_tag "admin/file.jpg" ..... #CSS .logo{ background:url('/assets/images/admin/logo.png'); 仅供参考。只是为了测试,我还没有使用asset_path标记,因为我还没有编译我的资产。 到目前为止一切都很好,直到我决定更新映像为止。我替换了一些颜色,但重新加载后,新样式的图像未显示。如果我直接在浏览器中查看图像,它仍显示旧图像。更进一步,我销毁了管理映像文件夹。但这并没有破坏所有仍在显示的图像。是的,我已经清除了缓存,并在多种浏览器上进行了尝试。 是否存在某种图像缓存?这只是使用pow服务页面的本地开发。 即使销毁整个图像文件夹,图像仍会被提供。 我想念什么吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.