named_scope :incomplete?, lambda { |user_id, todo_id|
{ :select => 1, :conditions =>
[ "#{user_id} not in (select user_todos.user_id from user_todos) and
#{todo_id} not in (select user_todos.todo_id from user_todos)" ]
}
}
我的结果是零。我希望它返回真实。我要做什么!?
另外,有更好的方法来写这个吗?
答案 0 :(得分:5)
您的代码存在一个巨大的问题:命名范围不是为了返回布尔值或单个值,而是用于返回要链接的过滤器。
请改用类方法。另外,使用插值,不要将值直接写入SQL代码。
class YourModel
def self.incomplete?(user_id, todo_id)
exists?(["? not in (select user_todos.user_id from user_todos) and ? not in (select user_todos.todo_id from user_todos)", user_id, todo_id])
end
end
答案 1 :(得分:0)
THX。我发现了这些问题!我最后写了这个:
def不完整?(user_id,todo_id) 返回UserTodo.find_by_sql(“选择大小写时(#{user_id}不在(从user_todos中选择user_id))和 (#{todo_id}不在(从user_todos中选择todo_id))然后为true,否则false结束为user_todos中的不完整“) 端
但我更喜欢你的方法。