小编Ale*_*lex的帖子

获取满足特定条件的数组项的计数

我有一个名为@friend_comparisons的数组,其中填充了许多用户对象.然后我使用以下内容对数组进行排序:

@friend_comparisons.sort! { |a,b| b.completions.where(:list_id => @list.id).first.counter <=> a.completions.where(:list_id => @list.id).first.counter }
Run Code Online (Sandbox Code Playgroud)

这是通过与每个用户相关联的特定计数器对数组进行排序(其具体细节对于问题不重要).

我想知道数组中有多少用户对象有一个大于某个数字的计数器(比方说5).我该怎么做呢?

以下是我目前正在解决的问题:

@friends_rank = 1
for friend in @friend_comparisons do
  if friend.completions.where(:list_id => @list.id).first.counter > @user_restaurants.count
    @friends_rank = @friends_rank + 1
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3

10
推荐指数
2
解决办法
8744
查看次数

使用Devise设置beta注册

我最近将Devise身份验证系统集成到rails测试应用程序中.测试应用程序只包含一个位于身份验证后面的项目模型/控制器/视图.

我现在正在添加测试版邀请系统,以便只有收到其他用户邀请的用户才能加入该网站.我通过以下方式实现了这个系统:http://railscasts.com/episodes/124-beta-invitations.

我遇到的一个问题是beta邀请函要求我向用户控制器添加一些逻辑,这是你无法通过Devise完成的.我正在尝试使用Users :: RegistrationsController <Devise :: RegistrationsController创建一个新的注册控制器,它基本上与Devise控制器相同,但允许我为beta邀请系统添加一些额外的逻辑.

但是,我不能让这个新的控制器工作(我也在这个新控制器中应该包含的内容方面遇到麻烦).我在路线文件中添加了以下内容:

资源:注册

资源:邀请

资源:项目

devise_for:用户

devise_scope:用户确实
得到'users/sign_up /:invitation_token'=>'registrations #new'
结束

我在这个新的注册控制器中添加了什么来模仿原始设计/注册控制器的功能?

ruby-on-rails ruby-on-rails-plugins devise

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

设置嵌套表单中关联记录数的限制

我有一个嵌套的表单,具有以下结构:

  • 清单
    • 项目

我在列表模型中运行验证,以确保每个列表最多只有十个项目.

validate :max_stack_items

def max_stack_items
  if items.size > 10
    errors[:base] << "Stack cannot have more than 10 items"
end
Run Code Online (Sandbox Code Playgroud)

这种方法在90%的情况下都能正常工作.我实现了一项功能,因此您可以删除列表表单中的列表项,如下所示:

<%= f.hidden_field :_destroy %>
<%= link_to "remove item", '#', class: "remove_fields" %>
Run Code Online (Sandbox Code Playgroud)

我有一些相关的javascript使这种情况发生(对问题不重要).

假设我已经有10个列表项,我去编辑表单.如果我通过单击"删除项目"链接删除其中一个列表项并添加新的列表项.验证失败,因为它认为有超过10个列表项.换句话说,它没有意识到我已经删除了一个列表项并同时添加了另一个列表项(因此仍然只有10个列表项).

如何获得验证以考虑我同时删除的列表项记录?

ruby-on-rails-3

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