Piku’s Blog

January 21, 2008

Rails with_scope tip

Filed under: Programming, Ruby on Rails — Tags: , , , — Mihai @ 10:03 pm

While searching some documentation about has_many :through I’ve found Josh Susser’s blog called (very imaginatively) “has_many :through” and the article about Magic join model creation in Rails Edge.

It is about using << on has_many through associations, before that you could use them only on habtm.

The article is quite old, 19 August 2006, and Rails has changed a bit since then, with_scope is now protected so now instead of

Contribution.with_scope(:create => join_attrs) { self << book }

use

Contribution.send(:with_scope, :create => join_attrs) { self << book }

For more information about many-to-many associations also see Many-to-many Dance-off in which habtm and has_many through is compared and Rails documentation.

January 19, 2008

ActiveRecord ‘type’ error

Filed under: Programming, Ruby on Rails — Tags: , , — Mihai @ 10:03 pm

While playing with Rails and ActiveRecord with has_many :through associations found an interesting error

> Account.find :all
SyntaxError: compile error
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:1748: syntax error, unexpected tINTEGER

It took me some time to figure this out so I thought it might be useful to post it here, maybe someone has the same problem.

The error is because of the ‘type’ attribute of Account model, in Rails it is reserved for single table inheritance. To fix this just do not use an attribute called ‘type’, rename it to something else.

Blog at WordPress.com.