小编Chr*_*ini的帖子

最好使用尺寸或数量集合?

计算集合时.通过大小或数量来做它更好吗?

大小= Ruby(@foobars.size)

Count = SQL(@foobars.count)

我也注意到,count再次前往db.

sql ruby-on-rails ruby-on-rails-3 postgresql-9.1

1
推荐指数
1
解决办法
66
查看次数

如何加载多态模型?

我正在尝试优化我们的一些查询.一个特别的挑战是试图加载多态模型.在这种情况下,UserView是多态的,并具有以下列:

user_id, user_viewable_id, user_viewable_type
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此查询时.

@user_views = UserView.select('user_views.* AS user_views, songs.* AS songs, users.* AS users')
  .joins('INNER JOIN users AS users ON user_views.user_id = users.id')
  .joins('INNER JOIN songs AS songs ON user_views.user_viewable_id = songs.id')
  .where(:user_viewable_type => 'Song').order('user_views.id DESC').limit(5)
Run Code Online (Sandbox Code Playgroud)

它似乎并不急于加载查询.我正在使用名为MiniProfiler的gem ,它表示它实际上运行的是n + 1个查询,而不是一个.

以下AR查询返回此SQL:

SELECT user_views.* AS user_views, songs.* AS songs, users.* AS users FROM "user_views" INNER JOIN users AS users ON user_views.user_id = users.id INNER JOIN songs AS songs ON user_views.user_viewable_id = songs.id WHERE "user_views"."user_viewable_type" = …
Run Code Online (Sandbox Code Playgroud)

polymorphism activerecord ruby-on-rails eager-loading ruby-on-rails-3

1
推荐指数
1
解决办法
1万
查看次数

如何持续增加计数器缓存列?

假设我有一个计数器缓存,需要在每次页面加载时递增.假设我有10个Web实例.如何持续增加计数器缓存列?

使用一个Web实例可以轻松实现一致性.但是在多个实例运行时,可能会出现竞争条件.

这是一个快速解释.假设我的计数器缓存列被调用foo_counts,其起始值为0.如果同时加载了2个Web实例,则两者都将计数视为0.当需要增加计数时.它们都将计数从0递增到1.

我看着http://guides.rubyonrails.org/active_record_querying.html#locking-records-for-update

任何想法将不胜感激.

ruby-on-rails race-condition counter-cache ruby-on-rails-3

1
推荐指数
1
解决办法
1182
查看次数

功能原型是否会在Ember 2中消失?

http://emberjs.com/blog/2015/05/13/ember-1-12-released.html上的最新Ember版本发布以来,似乎有一种新的setter和getter方法语法.

我们应该习惯这样做:

fullName: Ember.computed('firstName', 'lastName', function() {
  return this.get('firstName') + ' ' + this.get('lastName');
})
Run Code Online (Sandbox Code Playgroud)

代替:

fullName: function() {
  return this.get('firstName') + ' ' + this.get('lastName');
}.property('firstName', 'lastName')
Run Code Online (Sandbox Code Playgroud)

ember.js ember-cli

1
推荐指数
1
解决办法
373
查看次数

在模型挂钩之后设置控制器属性

我需要在model钩子后设置一个控制器属性.我可以想到两种方法:

model(params) {
  return this.store.findRecord('user', 1);
},

afterModel(model, transition) {
  model.get('profile').then(profile => {
    this.set('profile', profile);
  });
},

setupController(controller, model) {
  controller.set('model', model);
  controller.set('profile', this.get('profile'));
},
Run Code Online (Sandbox Code Playgroud)

另一种方法.即跳过setupController:

model(params) {
  return this.store.findRecord('user', 1);
},

afterModel(model, transition) {
  model.get('profile').then(profile => {
    this.controller.set('profile', profile);
  });
},
Run Code Online (Sandbox Code Playgroud)

两者似乎都有效.

两种方法都有任何额外的优点/缺点吗?显然,后者更短.但是在afterModel钩子中设置控制器属性是否感觉"干净" ?

编辑:之间的关系/关联userprofileasync.

ember.js ember-data ember-cli

1
推荐指数
1
解决办法
2390
查看次数

有更好的登录方式吗?

什么是记录Javascript/jQuery输出的最简单/最有效的方法?

目前,我alert('foobar');在代码中使用了类似块的东西.

javascript jquery logging

0
推荐指数
1
解决办法
218
查看次数

User.find('123-foobar')将返回ID为123的User

我曾经在github问过,但也会尝试在这里询问."足智多谋"没有错;-).使用friendly_id 4.

我用slug =>"123 foobar"创建了一个用户.该用户的ID为200.

这样做时User.find('123-foobar'),它返回id为123的用户,而不是用户200.

这是一个错误吗?

ruby-on-rails friendly-id ruby-on-rails-3

0
推荐指数
1
解决办法
295
查看次数

设置扩展类的类实例变量

如何Foo返回值@baz.此刻@baz回归nil.

module Bar
  @baz = 'baz'

  def get_baz
    @baz
  end
end

class Foo
  extend Bar
end

Foo.get_baz # Currently returns nil
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,有没有更好的方法来实现这个逻辑?

ruby

-1
推荐指数
1
解决办法
118
查看次数