Я noobie, и я пытаюсь просто получить все записи в базе данных и отобразить их в алфавитном порядке. Всякий раз, когда я показываю индексную страницу, записи всегда сортируются по убыванию по их идентификатору. Я использовал консоль, чтобы попробовать позвонить EvalTest.order («name»), и снова я продолжал получать записи, отсортированные по их идентификатору в порядке убывания, а не по имени. Нужно ли добавлять индекс в столбец имен для сортировки? Это кажется, что ответ должен быть так легко, но я не могу понять это ...не могу сортировать активные записи
Вот мой код:
User Model:
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
has_many :eval_tests
before_save { |user| user.email = email.downcase }
before_save :create_remember_token
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
validates :password, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
after_validation { self.errors.messages.delete(:password_digest) }
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
end
Eval_Test Модель:
class EvalTest < ActiveRecord::Base
attr_accessible :description, :name
belongs_to :user
validates :user_id, presence: true
validates :name, presence: true
validates :description, presence: true, length: { maximum: 350 }
default_scope order: 'eval_tests.created_at DESC'
end
EvalTest контроллер :
class EvalTestsController < ApplicationController
def show
@eval_test = EvalTest.find(params[:id])
end
def new
@eval_test = EvalTest.new
end
def index
@eval_tests = EvalTest.order("name")
end
def create
@eval_test = current_user.eval_tests.build(params[:eval_test])
if @eval_test.save
flash[:success] = "Nouveau test cree!"
redirect_to @eval_test
else
render 'new'
end
end
end
Тест Оценка index.html.erb:
<% provide(:title, 'Index des tests') %>
<h1>Index des tests</h1>
<ul class="eval_tests">
<% @eval_tests.each do |eval_test| %>
<li>
<%= link_to eval_test.name, eval_test %>
</li>
<% end %>
</ul>
«ActiveRecord» - это общая концепция, которая применяется к другим языкам и библиотекам/фреймворкам. Вы должны пометить его лучше, чтобы получить лучшую видимость и надлежащую помощь. Ред. – MasterAM