2013-05-27 45 views
3

我想在我的ActiveRecord模型中輸入我自己的has_many關係的條件。 我要我的條件爲覆蓋的默認條件。如何覆蓋rails中關係的默認has_many條件?

Class User < ActiveRecord::Base 

    has_many :notifs, :conditions => 
    proc { "(notifs.user_id = #{self.id} OR notifs.user_id = 0)" } 

並生成:

NOTIF負荷(在0.2ms)SELECT notifs * FROM notifs WHERE notifsuser_id = 1 AND((notifs.user_id = 1或notifs.user_id = 0))

我不希望活動記錄的默認狀態(第一WHERE notifs.user_id = 1外括號)。我只想要我自己的。我如何指定?

回答

1

爲Rails 4.1+可以使用unscope關聯範圍內。

class Post 
    belongs_to :user 
end 

class User 
    has_many :posts, -> { unscope(:where).where(title: "hello") } 
end 

User.first.posts 
# => SELECT "posts".* FROM "posts" WHERE "posts"."title" = $1 [["title", "hello"]]