Amrit Dhungana
Amrit Dhungana

Reputation: 4485

Rails4 Deprecation Warning

Rails4 is getting depreciation warning when I am upgrading from rails 3.2 to rails 4.0. I have this query.

Child.find(:all, :include => :children_users, :conditions => "state = 'active' AND owner_id = #{self.id} AND children_users.user_id = #{other_user.id}")

I am getting deprecation warning as follow :-

DEPRECATION WARNING: It looks like you are eager loading table(s) (one of: splits, accounts) that are referenced in a string SQL snippet. For example:

    Post.includes(:comments).where("comments.title = 'foo'")

Currently, Active Record recognizes the table in the string, and knows to JOIN the comments table to the query, rather than loading comments in a separate query. However, doing this without writing a full-blown SQL parser is inherently flawed. Since we don't want to write an SQL parser, we are removing this functionality. From now on, you must explicitly tell Active Record when you are referencing a table from a string:

    Post.includes(:comments).where("comments.title = 'foo'").references(:comments)

If you don't rely on implicit join references you can disable the feature entirely by setting `config.active_record.disable_implicit_join_references = true`. (called from splits_under_100_percent at /Users/newimac/RailsApp/bank/app/models/user.rb:274)

To solve this problem, I have try like this

Child.includes(:children_users).where(state: active, owner_id: self.id, children_users.user_id = other_user.id).load

or

Child.where{(state: active, owner_id: self.id, children_users.user_id = other_user.id).includes(:children_users)}

But none of them work.

Upvotes: 3

Views: 939

Answers (2)

Amrit Dhungana
Amrit Dhungana

Reputation: 4485

Thank You for @Zakwan. Finally, this query works.

Child.includes(:children_users).where(state: 'active', owner_id: self.id, "children_users.user_id" => other_user.id).load

Upvotes: 0

Zakwan
Zakwan

Reputation: 1072

children_users.user_id = other_user.id wrong.

The correct one is: "children_users.user_id" => other_user.id

Upvotes: 1

Related Questions