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

试试这个代码。