Changing the column name now will mean less pain in future. Trying to work around the problem leaves you open for bigger issues down the line.
open method from open-uri conflicting with ActiveRecord open attribute
-
03-06-2023 - |
Question
How can I solve this? how can I find which open-uri module is clashing with my model.
Here is some output to make the question clearer:
m=MyModel.new
m.open
NoMethodError: private method `open' called for #<MyModel:0xcd889b4>
from /var/lib/gems/2.0.0/gems/activemodel-3.2.14/lib/active_model/attribute_methods.rb:404:in `method_missing'
Here is what that file contains near line 404:
def method_missing(method, *args, &block)
if respond_to_without_attributes?(method, true)
super # line 404
else
match = match_attribute_method?(method.to_s)
match ? attribute_missing(match, *args, &block) : super
end
end
I forgot to write the open-uri part, see:
m.open=Time.now
=> 2014-03-04 17:00:04 +0000
m.save
ArgumentError: wrong number of arguments (0 for 1+)
from /usr/lib/ruby/2.0.0/open-uri.rb:28:in `open'
Update
I just found that open is an invalid column name.
How to handle this? other than change column name, since it is used in a large codebase.
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow