Как инициализировать объект Model в RoR?
Я создаю веб-сайт, на котором я хочу, чтобы каждый пользователь начинал с определенных значений для своих атрибутов.
Вот класс:
class User < ActiveRecord::Base
attr_accessible :name,
:email,
:goal,
:measurement,
:bmr_formula,
:fat_factor,
:protien_factor
end
В консоли rails --sandbox я могу изменять значения. Но я хочу начать объект с определенных значений.
Например, я хочу, чтобы измерение начиналось с «US», bmr_formula начиналось с «Katch» ... и т. Д. Вместо nil.
сейчас все начинается с нуля.
Я продолжу, чтобы показать, что я пробовал с результатами, полученными каждой попыткой.
Here is what worked:
after_initialize do
self[:measurement] = "US"
self[:bmr_formula] = "katch"
self[:fat_factor] = 0.655
self[:protein_factor] = 1.25
puts "User has been initialized!"
end
1.9.3p125 :001 > user = User.new
User has been initialized!
=> #<User id: nil, name: nil, email: nil, goal: nil, measurement: "US", bmr_formula:
"katch", fat_factor: 0, protein_factor: 0, created_at: nil, updated_at: nil>
1.9.3p125 :002 >
Thanks for the help everyone!
Полный класс:
attr_accessible :name,
:email,
:goal,
:measurement,
:bmr_formula,
:fat_factor,
:protien_factor
def initialize(measurement)
@measurement = measurement
# bmr_formula = "katch"
# fat_factor = 0.655
# protien_factor = 1.25
end
Приставка:
1.9.3p125 :001 > user = User.new("US")
=> #<User not initialized>
Низ класса:
def initialize
@measurement = "US"
# bmr_formula = "katch"
# fat_factor = 0.655
# protien_factor = 1.25
end
Приставка:
1.9.3p125 :001 > user = User.new
=> #<User not initialized>
1.9.3p125 :002 >
Низ класса:
self.@measurement = "US"
Приставка:
SyntaxError: /Users/Nick/Code/Rails/fitness_app/app/models/user.rb:10: syntax error, unexpected tIVAR
self.@measurement = "US"
Учебный класс:
after_initialize :measurement,
:bmr_formula,
:fat_factor,
:protien_factor
def defaults
self.measurement = "US"
self.bmr_formula = "katch"
self.fat_factor = 0.655
self.protien_factor = 1.25
end
Приставка:
1.9.3p125 :001 > user = User.new
=> #<User id: nil, name: nil, email: nil, goal: nil, measurement: nil, bmr_formula:
nil, fat_factor: nil, protien_factor: nil, created_at: nil, updated_at: nil>
1.9.3p125 :002 > user.measurement
=> nil
1.9.3p125 :003 > user.bmr_formula
=> nil