Fli*_*lip 2 ruby activerecord ruby-on-rails
我正在尝试将我用纯 Ruby 编写的算法集成到 Rails 应用程序中。我的 Ruby 项目的主类可能是一个资源。
当它在 Ruby 中初始化时,我立即在initialize方法中调用了一个函数:
def initialize(keyword)
@keyword = keyword
@sources = get_titles_of_sources
end
Run Code Online (Sandbox Code Playgroud)
在 Rails 中,当我创建新对象时,我通常没有或至少看到方法initialize。
@user = User.new(attribute1: value1, attribute2: value2)
Run Code Online (Sandbox Code Playgroud)
但这种风格不允许我在创建新对象时自动调用方法。
鉴于您在评论中所说的内容,我觉得您应该避免回调(顺便说一句,如果可以的话,您应该始终避免回调......)。
无论如何,我建议您创建一个build类似的方法:
class User
def self.build(props = {})
new(props).tap do |user|
#your code on initialize
end
end
end
Run Code Online (Sandbox Code Playgroud)
我通常倾向于将build方法转移到构建器中。但它会让你创建一个额外的class
| 归档时间: |
|
| 查看次数: |
2184 次 |
| 最近记录: |