属性未保存到表

时间:2016-01-03 08:18:19

标签: ruby-on-rails

Rails 4.2.1
Ruby 2.1.5

我有以下帮助方法:

def parse_potential_followers(params)
  t_id = TestSet.where(:test_name => params[:test_set][:test_name]).pluck(:id)
  screen_names = get_screen_names
  screen_names.each do |s|
    potential_follower = PotentialFollower.new(
        :screen_name => s,
        :test_sets_id => t_id,
        :status => 'new',
        :slug => generate_slug([t_id, s])
    )
    logger.info("Test Set ID: #{t_id}")
    potential_follower.save
  end
end

问题在于,当我调用此方法时,在表中插入数据时会跳过test_sets_id。其他三个属性保存得很好。

我通过logger.info验证了t_id是否有效。

所有属性都在potential_followers表中定义。

我还拥有potential_followers_controller.rb中potential_follower_params方法的所有属性:

def potential_follower_params
  params.require(:potential_follower).permit(:screen_name, :test_sets_id, :connections, :status,
    :slug, :created_at, :updated_at)
end

我忘了什么?

答案:

t_id是一个数组(ActiveRecord查询的结果)。如果在哈希中使用t_id变为t_id [0],它将正常工作

2 个答案:

答案 0 :(得分:2)

您可以通过

获得t_id
t_id = TestSet.where(:test_name => params[:test_set][:test_name]).pluck(:id)

这是一个数组。您可能应该尝试使用integer类型而不是array来获取变量。如果您的test_sets_idinteger,则数组中的值不会被保存。

答案 1 :(得分:1)

我的猜测是数据类型不同。也许您正在尝试将字符串保存为整数?