我有以下范围:第一或Rails的范围限制
scope :user_reviews, lambda { |user| where(:user_id => user) }
我在控制器中应用此:
def show
@review = @reviewable.reviews.user_reviews(current_user).first || Review.new
end
的first
是限制搜索当前用户的唯一评审。现在我试着写一个新的示波器user_review
,我尝试了很多方法将user_reviews
示波器与first
连接起来,但却无法得到它。事情是这样的:
scope :user_reviews, lambda { |user| where(:user_id => user) }
scope :user_review, lambda { |user| user_reviews(user).first }
我知道上面user_review
是错误的,但只是想你展示家伙什么,我试图做的。
我该如何正确写入?
谢谢。
我没有看到一个很大的问题,你有什么。一个只返回一个对象的范围不再是一个范围。您可以在作用域的块中定义方法,但在这种情况下这可能是多余的(例如,在范围结果中简单调用'.first'的'def first'方法)。 –
@TomL,你的想法有效。请把它作为答案,以便我可以标记并给你信用。谢谢。 – Victor