Ruby on Rails:在不查询数据库的情况下查找对象记录

时间:2016-10-16 09:33:14

标签: ruby-on-rails ruby activerecord

我想知道如何从对象示例中获取特定记录

'use strict';

var shim = '(' + function() {
if(typeof window.showModalDialog !== 'function') {
    window.showModalDialog = function() {
        var opts = arguments[2];
        opts = opts
            .replace(/;/g, ',')
            .replace(/:/g, '=')
            .replace(/dialogWidth/g, 'width')
            .replace(/dialogHeight/g, 'height')
            .replace(/center/g, 'centerScreen');
        return window.open.call(this, arguments[0], '_blank', opts );
    };
}
} + ')();';

var scriptEl = document.createElement('script');
scriptEl.textContent = shim;
(document.head||document.documentElement).appendChild(scriptEl);

@user = User.all 中,我想只显示第3顺序中的记录,我试试,但这给了我所有的记录。 :

index.html.erb

我发现了这个:

<% @user.each do |u| %>

但是没有用,我不知道如何在<% @user.find{|b| b.id == 1}%> <%= @service.full_name%>

中使用它

2 个答案:

答案 0 :(得分:0)

您也可以直接在模板中使用数组元素。有理由 - 如果你需要所有其他用户

<div class="super-user">
   <%= @users[3].name %>
</div>

<div class="other-users">
  <% @users.each do |u| %>
    <a href="#">Destroy Him!</a>
  <% end %>
</div>

如果您不需要所有其他用户,请不要全部取用。使用findfind_by方法,例如

@user = User.find(4) # finds user by id=4

@user = User.find_by(name: 'user', admin: true) # finds by hash arguments

甚至

# fetch direcly 3-th user from database
@user = User.order(:id).limit(1).offset(2).first 

http://guides.rubyonrails.org/active_record_querying.html

http://ruby-doc.org/core-2.3.1/Array.html

答案 1 :(得分:0)

你也可以写

@user = User.all.third

鲍里斯是对的,虽然只是返回所有记录是一个不好的做法。此时可能不会引人注意,但随着数据库中User条记录的数量增加,此查询将按比例变慢。所以更好的选择是

@user = User.third