小编Nik*_*las的帖子

使用RxSwift执行操作的顺序

我正在使用RxSwift来完成我的代码.对于我目前的项目,我想将RxSwift的原则应用于来自LayerKit的一堆完成块:

layerClient.connectWithCompletion { (success, error) -> () in
  if (!success) {
     // Error     
  } else {
    layerClient.requestAuthenticationNonceWithCompletion { (nonce, error) -> () in
      // Even more blocks
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我在考虑这样的事情:

// In extension
public func rx_connect() -> Observable<Bool> {
    return create { observer in

        self.connectWithCompletion { (success, error) -> ()in
            if (success) {
                observer.on(.Next(success))
                observer.on(.Completed)
            } else {
                observer.on(.Error(error))
            }
        }
        return NopDisposable.instance
    }
} 

public func rx_requestAuthenticationNonce() -> Observable<String> {
    // Same for annother method
}

// In …
Run Code Online (Sandbox Code Playgroud)

reactive-programming swift rx-swift

4
推荐指数
1
解决办法
7569
查看次数

ActiveRecord的最佳方法:如果存在,则删除,否则创建

我有此方法可为某个提示创建收藏夹:

def favorite
  @tip = Tip.find(params[:id])
  Favorite.create(user: current_user, tip: @tip)
  redirect_to :action => "show", :id => @tip.id
end
Run Code Online (Sandbox Code Playgroud)

我希望它更像一个拨动开关。因此:如果某个提示的用户收藏夹已经存在,则应删除该收藏夹。如果是用户和提示的新组合,则应使用这些值创建一个新的收藏夹。

最好和最美丽的方法是什么?

ruby activerecord ruby-on-rails

3
推荐指数
1
解决办法
2693
查看次数