2015-12-10 4 views
1

В настоящее время я изучаю Ruby on Rails, и есть вещи, которые я не понимаю, почему это так, а также как.Ruby on Rails - Определение модели?

Допустим, у нас есть users стол с этой структурой:

+-------+---------------+ 
| id | int(11)  | 
| name | varchar(255) | 
+-------+---------------+ 

Почему файл модели только выглядит как:

class User < ActiveRecord::Model 
end 

Там нет ни собственности геттер/сеттер.

  • Как это работает?
  • Почему так?
  • Нужно ли мне attr_accessor :id, :username?

У меня есть большой фон в PHP и C#, и я никогда этого не видел. Бьюсь об заклад, я не единственный, кто спрашивал себя об этом, поэтому извините, если это дубликат (я искал, но ничего не нашел)!

ответ

1

Это работает примерно так: В первый раз, когда вы вызываете свой пользовательский класс, он ищет таблицу с именем users. Если он существует, он будет загружать все поля из этой таблицы, «автоматически», создавая для вас «сеттеры» и «геттеры».

Например, у вас будет из коробки:

user = User.new 
user.name 
user.name= 
user.name? # which will tell you if this field is nil, or not. 

и тому подобные вещи

User.find_by_name('name') 

Кроме того, вы можете "проверить" ваш класс в консоли, например:

rails C# or irb, but I don't know how much you'd have to require then ... 

User # and just hit enter 

оно произведет что-то вроде:

User(id: number, name: string) 
+0

Хорошо, но разве это не узкое место из-за запроса 'EXPLAIN', я думаю? –

+0

Не следует создавать объяснения. Если это так, просто просмотрев поля таблицы, возможно, что-то сильно сломанное/неправильное настроенное/медленное соединение внутри системы. Или вы имеете в виду что-то еще? Кроме того, он обычно делает это только один раз ... –

+0

Я предполагаю, что он выполняет этот поиск при инициализации приложений или в каждом запросе в режиме dev. Но как он может искать поля в таблице без EXPLAIN или что-то еще, которые перечисляют структуру таблицы? –

Смежные вопросы