Ruby on rails Rails:构建方法打破循环
我尝试添加多个对象,如下所示:Ruby on rails Rails:构建方法打破循环,ruby-on-rails,insert,has-many,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}" inter
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
在调用感兴趣的name和category时,您应该得到一个NoMethodError,因为哈希是使用[]方法访问的。替换
interest.name
与
或者使用,这可能更可取。函数的参数称为interests\u hash,您使用的是实例变量而不是参数,您可以像数组一样迭代,它包含。。。mmm对象?请您澄清一下散列包含哪些内容?很抱歉造成混淆。编辑和重命名内容时出错。将兴趣散列重命名为兴趣散列,其中包含一个散列数组。这并不是导致循环中断的原因,但是原始代码有点不同。我猜,当调用感兴趣的名称时,您会得到一个命名错误,但由于某种原因,它不会显示给您的用户。请看下面我的答案。如何回答?你给散列类打过补丁吗?谢谢,这就是问题所在。我试着改变它,但一开始什么都没有改变,直到我在if条件中看到了相同的错误,而这个错误在我的问题xd中没有包括,只是为了让混乱彻底:我可以通过这种方式访问OmniAuth::AuthHash oauth.uid。这就是为什么我总的来说认为哈希是可能的。这是因为它继承了很多感谢,每5分钟学习一次新东西。如果可以的话,我会投票支持你的评论。
interest.name
interest["name"]