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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 如何在Excel中打开的文件上执行File.ReadAllLines?
- 将8位转换为等效的12位
- Swift Error fatal error: unexpectedly found nil while u
- Oracle ORA-22908(NULL表值的参考)异常分析与解决方法
- ruby-on-rails-3.1 – Rails资产管道在生产环境中不起作用?
- 正则表达式匹配不以模式结尾的字符串
- c std :: vector <> vs new []表现
- UML中关联,聚合,组合的区别及C++实现
- 《老罗Android》学习之xml解析
- 详解vue mint-ui源码解析之loadmore组件