我正在尝试使用其关联缓存ActiveRecord.问题是访问检索记录上的关联时存在数据库查询.
通常情况下,我只是缓存加载Rails.cache.write('post', Post.includes(:comments).find(99)).这似乎有效,但问题是我只想缓存关联的有限子集,并且在急切加载时会忽略限制(例如这里提到).因此,Post.includes(:popular_comments).find(99)将返回所有评论,而不仅仅是流行的评论.
所以我在懒惰加载关联后尝试缓存对象,但是在拉出对象时不幸发生了一个查询:
class Post < ActiveRecord::Base
has_many :comments
has_many :popular_comments, :class_name > 'Comment', :limit => 20, :order => :votes
post = Post.find(99)
post.popular_comments # lazy-load limited associations
Rails.cache.write('post', post)
...
Rails.cache.read('post').popular_comments # Unwanted SQL query :(
Run Code Online (Sandbox Code Playgroud)
我尝试过缓存克隆,同样不需要的SQL查询.我已经尝试使用redis和memcached实现,结果相同.奇怪的是,这个序列确实可以在控制台上运行,但在控制器或上面的视图中的简单用法失败(即SQL发生).
更新(2017年4月):我现在说这是一个愚蠢的前提.缓存整个对象通常是浪费的,因为它使用了大量的缓存存储,并且序列化/反序列化很慢.缓存关联(如本问题中所述)将该浪费乘以N.通常,只缓存原始ID和HTML片段会更有效.
图片说得最好:

它只是一个float: left图像(http://jsbin.com/itihes/1)。有什么方法可以防止纯 CSS 中的动态文本出现此问题?我确实希望文本换行,但如果它少于一整行(最好是两整行),则所有文本都将保留在右侧的同一块中。
图像宽度是固定的,但整个块的宽度是动态的。
从Gemfile生成Gemfile.lock之后,是否有任何工具可以往返回冻结Gemfile中的版本.我宁愿避免手动操作.
背景:在Gems上冻结次要版本是一个好习惯,例如,如果Gemfile.lock是2.4.1,我想更新Gemfile以包含〜> 2.4(如此处所述).
我有set editing-mode vi.inputrc,它影响Ruby,MySQL等的控制台.但它不适用于Redis,我想知道是否有任何方法可以实现它(理想情况下在OSX和Linux上).
(这里也提到过.)
根据标准示例,我在表单中集成了Stripe checkout按钮和脚本标记.如果内容作为新的HTML页面输出,它可以工作,但如果内容是动态引入的(通过Ajax和innerHTML),则不显示该按钮.如何手动触发?
我想做一些类似的事情,fingerprint = Digest::SHA256.base64digest(str)但是要使用base62而不是base64。如何有效地构建任何字符串的唯一以base62编码的字符串哈希?
我想做以下事情:
Post.count.explain # doesn't work
Run Code Online (Sandbox Code Playgroud)
之所以失败,是因为EXPLAIN是Relation上的一种方法,而Post.count不是一种Relation。它只是查询结果的规则整数。那么如何解释计数查询呢?
在我的 rails 应用程序中,有一个表的 'id' 列默认值设置为 0。我想删除此默认值并再次使此列自动递增。我试过了
change_column_default(:table_name, :id, nil)
但它似乎不适用于诸如“id”之类的主键
有没有办法在速记中跳过指定CSS属性,包括填充,边框,边距等.
喜欢padding: <skipped> 1em 2em而不是:
padding-right: 1em
padding-bottom: 2em
Run Code Online (Sandbox Code Playgroud) 我已经设置了Brightbox Ruby 2.1.0 apt包并遇到了本机编译错误安装json包.
$ sudo gem install json -v '1.8.1'
Fetching: json-1.8.1.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
/usr/bin/ruby2.1 extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
extconf failed, exit code 1
Run Code Online (Sandbox Code Playgroud)
我已ruby2.0-dev按照此处的说明安装,但它将标头放在不同的文件夹中(/usr/include/ruby-2.0.0/ruby,将它们复制到/ usr/lib/ruby/include没有用).知道如何安装这个宝石吗?