Rails:构建方法中断循环

时间:2014-05-10 14:23:23

标签: ruby-on-rails insert has-many

我正在尝试添加多个对象:

class Person < ActiveRecord::Base
  has_many :interests
  ...

  def add_interests(interest_hashes)
    interest_hashes.each do |interest|
      Rails.logger.debug "person.apply_interests: interest: #{interest.inspect}"
      interests.build(:name => interest.name, :category => interest.category)
    end
    save!
  end
  ...
end

然而,在调用<some person>.add_interests(<some hashes>)的日志中,我看到的只是第一个哈希 - 没有错误或异常。如果我删除构建方法,则循环按预期工作。

  1. 调用构建方法时发生了什么?
  2. 什么是实现我正在尝试的更好的方法?
  3. 修改

    interest_hashes.inspect输出示例:

    [{"category"=>"Interest", "name"=>"Formula One"}, {"category"=>"Musical instrument", "name"=>"Guitar"}]
    

1 个答案:

答案 0 :(得分:0)

name上调用categoryinterest时,您应该收到NoMethodError,因为使用[]方法访问哈希值。取代

interest.name

interest["name"]

或使用Struct,这可能更合适。