我可以在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)中的一个片段,我已经跟着这封信了,但仍然没有成功。
有什么想法吗?