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],它将正常工作
答案 0 :(得分:2)
您可以通过
获得t_id
t_id = TestSet.where(:test_name => params[:test_set][:test_name]).pluck(:id)
这是一个数组。您可能应该尝试使用integer
类型而不是array
来获取变量。如果您的test_sets_id
是integer
,则数组中的值不会被保存。
答案 1 :(得分:1)
我的猜测是数据类型不同。也许您正在尝试将字符串保存为整数?