加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在RoR中初始化Model对象?

发布时间:2020-12-17 03:28:49 所属栏目:百科 来源:网络整理
导读:我正在创建一个网站,我希望每个用户都可以从属性的某些值开始. 这是班级: class User ActiveRecord::Base attr_accessible :name,:email,:goal,:measurement,:bmr_formula,:fat_factor,:protien_factorend 在rails控制台–sandbox中,我可以更改值.但我想用
我正在创建一个网站,我希望每个用户都可以从属性的某些值开始.

这是班级:

class User < ActiveRecord::Base

  attr_accessible :name,:email,:goal,:measurement,:bmr_formula,:fat_factor,:protien_factor

end

在rails控制台–sandbox中,我可以更改值.但我想用某些值启动对象.

例如,我希望测量以“US”开头,bmr_formula以“Katch”开头……等等而不是nil.

现在,一切都从零开始.

我将继续展示我尝试过每次尝试得到的结果.

这是有效的:

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 >

感谢大家的帮助!

全班:

attr_accessible :name,: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,: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,measurement: nil,bmr_formula:    
nil,fat_factor: nil,protien_factor: nil,updated_at: nil> 
1.9.3p125 :002 > user.measurement
=> nil 
1.9.3p125 :003 > user.bmr_formula
=> nil

解决方法

我会使用after_initialize回调:

after_initialize :default_values
def default_values
  self.status ||= 'P'
  self.measurement = "US"
  self.bmr_formula = "katch"
  self.fat_factor = 0.655
  self.protien_factor = 1.25
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读