我的架構看起來像這樣(簡化):我擁有不同特權的用戶,創建經歷特定生命週期(創建,審閱,關閉,等等)的帖子。Rails:動態:finder_sql可能嗎?
用條款說話,class User has_many :posts
,但我希望用戶根據他們的權限查看帖子。如果用戶有特權,他應該能夠看到所有帖子,如果沒有,我希望他只能看到已經查看過的帖子以及他自己的帖子。
現在,Post模型有一個類方法for_user(user)
,它簡單地檢查用戶權限並返回相應的帖子。我明白了,這是probalby不是Rails的方式來做到這一點,我想知道,如果它可以做這樣的事情:
class User
has_many :posts, :finder_sql => finder
#[...]
def finder
if self.has_privileges? #simplified...
all
else
where('[...]')
end
end
不幸的是,這並不能作爲軌工作預計:finder_sql是一個只有字符串和一個字符串。有沒有其他的方式來創建所需的行爲?