# Rails 2.1.2 =\> 2.2.2 Attempt to call private method

**URL:** <https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996>\
**Category:** Rails\
**Created:** [November 24, 2008, 1:11pm UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996 "2008-11-24T13:11:39Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 24, 2008, 1:11pm UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/1 "2008-11-24T13:11:39Z")

</div>

Hello All,

## Controller code

@dates = Q.find(:all,  
:select =\> ‘year(q.approved\_at) as y, month(q.approved\_at) as m, day  
(q.approved\_at) as d, count(\*) as cnt’,  
other conditions

## View code

\<% y = ‘’ %\>  
\<% for d in @dates  
if y.to\_s != d.y.to\_s

the new rails 2.2.2 says that

"Attempt to call private method

…attribute\_methods.rb:236:in `method\_missing’

How I should write my code, so I can select not only the Q table  
fields, but also calculated fields ?

Regards,  
Pavel

---

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 24, 2008, 1:16pm UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/2 "2008-11-24T13:16:21Z")

</div>

What is the full stack trace?

---

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 24, 2008, 1:27pm UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/3 "2008-11-24T13:27:00Z")

</div>

Is this enough ?

4: \<% y = ‘’ %\>  
5: \<% for d in @dates  
6: if y.to\_s != d.y.to\_s

```
c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/

```

lib/active\_record/attribute\_methods.rb:236:in `method_missing' app/views/public/dates.rhtml:6 app/views/public/dates.rhtml:5:in`each’  
app/views/public/dates.rhtml:5  
c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/  
action\_view/renderable.rb:39:in `send' c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/ action_view/renderable.rb:39:in`render’  
c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/  
action\_view/template.rb:73:in `render_template' c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/ action_view/base.rb:256:in`render’  
c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/  
action\_view/base.rb:367:in `_render_with_layout' c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/ action_view/base.rb:254:in`render’  
c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/  
action\_controller/base.rb:1174:in `render_for_file' c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/ action_controller/base.rb:896:in`render\_without\_benchmark’  
c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/  
action\_controller/benchmarking.rb:51:in `render' c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/ lib/active_support/core_ext/benchmark.rb:8:in`realtime’  
c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/  
action\_controller/benchmarking.rb:51:in `render' c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/ action_controller/base.rb:868:in`render\_without\_benchmark’  
c:/Program Files/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/  
action\_controller/benchmarking.rb:51:in `render' c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/ lib/active_support/core_ext/benchmark.rb:8:in`real

---

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 24, 2008, 1:56pm UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/4 "2008-11-24T13:56:26Z")

</div>

> 4: \<% y = ‘’ %\>  
> 5: \<% for d in @dates  
> 6: if y.to\_s != d.y.to\_s

also if I rewrite line 6 in the following way it works

6: if y != d[‘y’].to\_s

but it requires to change a lot of code

Regards.  
Pavel

---

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 24, 2008, 2:41pm UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/5 "2008-11-24T14:41:09Z")

</div>

in fact the elements in @dates are not real membes of Q, they even  
have nil value in id.  
try to use @dates = ActiveRecord::Base.connection.select\_values("

---

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 24, 2008, 3:14pm UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/6 "2008-11-24T15:14:44Z")

</div>

ActiveRecord::Base.connection.select\_all i meant

---

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 24, 2008, 3:15pm UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/7 "2008-11-24T15:15:55Z")

</div>

> in fact the elements in @dates are not real membes of Q, they even  
> have nil value in id.  
> try to use @dates = ActiveRecord::Base.connection.select\_values("

this function doesn’t support :first, :conditions, :joins and etc  
params

Regards,  
Pavel

---

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 25, 2008, 9:54am UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/8 "2008-11-25T09:54:03Z")

</div>

On 24 Nov 2008, at 12:10, se\_pavel wrote:

> View code

Don’t call it y. There’s already a method on object called y (seems to  
do yaml dumps). You might be able to get round that with

class Q \< ActiveRecord::Base  
undef\_method :y

# rest of that class here

end

Fred

---

<div class="post-metadata">

**Author:** ![se\_pavel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/90db22/32.png) [@se\_pavel](https://www.ruby-forum.com/u/se_pavel)\
**Post date:** [November 25, 2008, 11:00am UTC](https://www.ruby-forum.com/t/rails-2-1-2-2-2-2-attempt-to-call-private-method/153996/9 "2008-11-25T11:00:57Z")

</div>

> Don’t call it y. There’s already a method on object called y (seems to  
> do yaml dumps). You might be able to get round that with
> 
> class Q \< ActiveRecord::Base  
> undef\_method :y
> 
> # rest of that class here
> 
> end

yes, you are right … I have renamed “y” to “year” and it works

Regards,  
Pavel
