强参数在Rails模型静态方法中不起作用

时间:2016-06-17 18:43:38

标签: ruby-on-rails activerecord model

我可以在Controller中找到有关使用和允许强参数的大量信息,但是当你尝试从模型的静态方法中更新模型时呢?

我的OodleListing模型中有一个名为self.update_listings的方法中的以下代码,它似乎不起作用。

# Update DB values with updated values
params = ActionController::Parameters.new(oodle_listing.attributes.except('id', 'updated_at', 'created_at')).permit!
if existing_listings[0].update!(params)
  puts "Updated #{oodle_listing.oodle_id} - #{oodle_listing.title}"
else
  puts "Error: Unable to update #{oodle_listing.oodle_id} - #{oodle_listing.title}"
  puts " - #{oodle_listing.errors.full_messages.to_sentence}"
end

(existing_listings [0]是我使用OodleListing.where()查询检索的oodle_listing记录)

它在控制台中打印

WARNING: Can't mass-assign protected attributes for OodleListing: oodle_id, title, body, url, source_id, source_name, address, zip, city_code, city_id, state_id, country_id, latitude, longitude, img1_src, img1_width, img1_height, img1_desc, img1_size, img2_src, img2_width, img2_height, img2_desc, img2_size, ctime, paid, revenue_score, currency, delivery, fee, breed_id, age, price, price_display, seller_phone, sex, color, discipline_id, last_compared
    app/models/oodle_listing.rb:98:in `block (2 levels) in update_listings'
    app/models/oodle_listing.rb:33:in `each'
    app/models/oodle_listing.rb:33:in `block in update_listings'
    app/models/oodle_listing.rb:15:in `update_listings'

然而,尽管没有保存更新,它立即说出COMMIT

(109.5ms)  COMMIT

我能找到的唯一参考是强参数GitHub页面(https://github.com/rails/strong_parameters#use-outside-of-controllers)中的一个片段,我已经跟着这封信了,但仍然没有成功。

有什么想法吗?

0 个答案:

没有答案