agm*_*eod 5 ruby-on-rails ruby-on-rails-3
我有以下模型设置.但是从日志中我可以看出,变量在db中保存为null:
class Bracket < ActiveRecord::Base
before_create :set_round_to_one
def set_round_to_one
@round = 1
end
end
Run Code Online (Sandbox Code Playgroud)
我通过使用这样的东西创建它:
bracket = Bracket.new(:name => 'Winners', :tournament_id => self.id)
bracket.save
Run Code Online (Sandbox Code Playgroud)
我确实使用了create as new和save,但它也没有用.
Zab*_*bba 11
假设round你是brackets表中的一个字段,你需要调用setter:
self.round = 1
这是因为,round实际上是一个钥匙插入bracket的attributes哈希,并通过调用该哈希值是否设置正确的制定者.
此外,@round = 1您只需round在第一次调用时创建一个名为create的新实例变量.并且由于ActiveRecord不在实例变量中查找值(它在attributesHash中查找),因此只要保存相关值就没有任何反应@round.
它应该是
class Bracket < ActiveRecord::Base
before_create :set_round_to_one
def set_round_to_one
self.round = 1
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4509 次 |
| 最近记录: |