Skip to content
Lance Pollard edited this page Sep 25, 2012 · 4 revisions

Feature Ideas

Controller Ideas

It might be cool to get rid of having to call things like @params and @currentUser all the time, just call params. We'd need to somehow define local variables dynamically. Only if it doesn't come at a performance cost.

Transactions

Tower.transaction (transaction) =>
  _.series [
    (next) => App.User.with(transaction).create(next)
    (next) => App.Post.with(transaction).create(next)
  ], (error) =>
    transaction.commit()

Or perhaps the transaction prevents any persistence from occurring until the end?

Tower.Store.transaction (transaction) =>
  user = App.User.with(transaction).create()
  user = transaction.adopt(App.User).create()
  post = new App.Post
  transaction.adopt(post)
  post.with(transaction)
  
  transaction.commit (error) =>
    

Problems with this are that you can't get a realistic snapshot of the user/post objects, since they haven't been persisted. And it's a different programming paradigm.

When you save a dirty model, it takes a snapshot of the changes. This makes it so you can still change the attributes, but anything after that model.save() call won't be passed to the database (if it's async).

[Ideas/Todo]

# maybe `users` is a cursor, but it feels like an array, so you can do...
App.User.paginate (error, users) =>
  while users.hasNext
    for user in users
      console.log user.name
Clone this wiki locally