Ruby on rails Rails使用默认值初始化新对象
我有以下课程:Ruby on rails Rails使用默认值初始化新对象,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有以下课程: class Question < ActiveRecord::Base attr_accessible :choices end 这是可行的,但似乎应该在模型中这样做,以促进数据完整性。有更好的方法吗?您有几种解决方案。按优先顺序 创建自定义方法,并在需要此类功能时使用它 class Question < ActiveRecord::Base attr_accessible :choices def self.prepare new(:choi
class Question < ActiveRecord::Base
attr_accessible :choices
end
这是可行的,但似乎应该在模型中这样做,以促进数据完整性。有更好的方法吗?您有几种解决方案。按优先顺序
class Question < ActiveRecord::Base
attr_accessible :choices
def self.prepare
new(:choices => ['','','',''])
end
end
选项
class CreateQuestions
但我同意第一个是最好的解决方案
在任何情况下,都不要覆盖初始化,在第二个解决方案中描述的初始化后使用
回调。因此您只需调用问题。从控制器准备好吗?目前只有在新建和创建之后才会发生这种情况,但在其他地方也可能发生这种情况。是的。在控制器中调用自定义方法并没有什么坏处。实际上,在应用程序中公开自定义模型API是个好主意。
class Question < ActiveRecord::Base
attr_accessible :choices
def self.prepare
new(:choices => ['','','',''])
end
end
class Question < ActiveRecord::Base
attr_accessible :choices
after_initialize :default_choices
protected
def :default_choices
self.choices ||= ['','','','']
end
end