Rails 4.2.3 上 Ruby 的重构
Refactoring in Ruby on Rails 4.2.3
我正在尝试重构我的代码以使其看起来更简洁。
现在我有这个坏代码:
@member = Member.new
@member.build_local_board
@member.build_prospective
@member.build_alumni
@member.build_board
@member.build_job
@member.build_academic
@member.build_special_role
@member.build_conferences_member
@prospective = Prospective.new
@alumni = Alumni.new
@board = Board.new
@user = User.new
@job = Job.new
@academic = Academic.new
我试图让它类似于这样:
models = %w(local_board, prospective, alumni, board, [...])
fields = [models]
fields.each do |f|
@f = f.new
@member.build_f
end
但我想我缺少一些 Ruby 语法 ,因为我得到这个错误:
undefined method 'new' for ["local_board,", "prospective"]:Array
看起来真的很简单。这就是你第一次学习框架而不是核心语言时的问题。
先谢谢你了。
models = %w(local_board prospective alumni board)
models.each do |f|
klass = f.camelize.constantize
instance_variable_set("@#{f}", klass.new)
@member.send("build_#{f}".to_sym)
end
试试这个代码。
我正在尝试重构我的代码以使其看起来更简洁。 现在我有这个坏代码:
@member = Member.new
@member.build_local_board
@member.build_prospective
@member.build_alumni
@member.build_board
@member.build_job
@member.build_academic
@member.build_special_role
@member.build_conferences_member
@prospective = Prospective.new
@alumni = Alumni.new
@board = Board.new
@user = User.new
@job = Job.new
@academic = Academic.new
我试图让它类似于这样:
models = %w(local_board, prospective, alumni, board, [...])
fields = [models]
fields.each do |f|
@f = f.new
@member.build_f
end
但我想我缺少一些 Ruby 语法 ,因为我得到这个错误:
undefined method 'new' for ["local_board,", "prospective"]:Array
看起来真的很简单。这就是你第一次学习框架而不是核心语言时的问题。
先谢谢你了。
models = %w(local_board prospective alumni board)
models.each do |f|
klass = f.camelize.constantize
instance_variable_set("@#{f}", klass.new)
@member.send("build_#{f}".to_sym)
end
试试这个代码。