Activity
Posted in Migrate away from Mandrill?
Hey Mel! Just recorded this and wanted to share it with ya so you could watch it before I officially publish it. https://excid3.wistia.com/medias/9bst8e6py7
Let me know if this helps! I tried to explain all the aspects of SMTP and stuff to hopefully give a deeper explanation of all the things going on for it, so hopefully it makes things easier to understand!
Posted in Migrate away from Mandrill?
Hey Mel, I've got a project that I need to add Sendgrid to today, so I'm going to make a video on it for you. :)
I think one thing you ran into was that there are a couple ways to talk to Sendgrid. One is the SMTP connection which was what I linked (and the one you'll actually want to use) but then there's the sendgrid API which is not what you want to use, but that's where the gems come from. Two separate things that are never clearly explained the differences about.
I'll be doing a video on SMTP and I'll go into depth to explain how that all works for ya.
Posted in Episodes Source Code
Unfortunately for a lot of the earlier episodes I don't have the source code anymore because they were on my old laptop. :( Anything that does have code up there right now is what I've got.
Posted in Exporting Records To CSV Discussion
What a familiar face. 👋
Good catch, I hadn't run into that but I could see that happening somehow.
Posted in Multi select form & DB search
Hey Sacha,
For those, you actually want to querying using IN
so that SQL can look for matches in an array of IDs. For example:
brand_ids = [1,2,3] # These IDs may come from your form params from a multi-select
Order.where(brand_id: brands)
# SELECT "orders".* FROM "orders" WHERE "orders"."brand_id" IN (1, 2, 3)
And remember you can chain your where
calls to make it cleaner:
Order.where("created_at between (?) and (?)", self.start, self.end).where(brand: self.brand, team: self.team)
That'd do it, glad you got it fixed. 🙌
Hey Drazen,
Handful of different ways to do this. If you know which channels the user is joined to server-side, you can just loop through them and then stream_from
for each channel. That will setup several redis pubsub connections so you will receive all the messages across those channels.
Posted in Refile uploading via rails console
I'm not entirely sure on that one. I imagine you could write the same value in and then save without callbacks in your seeds in order to populate but not trigger Refile to do a reupload?
Posted in Refile uploading via rails console
Ah ha! I was going to suggest that because I couldn't imagine why everything else was working just fine. Hate when things fail silently like that.
You'll want to modify your authentication code to lookup the current tenant and then scope the User lookup query to only ones for that domain that way only users of that tenant can access that tenant.
Posted in Refile uploading via rails console
Are there errors on the page model after save? If you load it fresh out of the database, does the image attribute exist?
I think its mostly just not taken off due to habit. We've had position arguments and then optional hashes which are pretty much keyword arguments so it's not a big change, but it's definitely a nice one.
It's probably a good habit to start using them where they make sense from now on. I'll probably just keep forgetting to do it though. :)
Hey Earl,
What I would do is create an activity model, so you would keep track of the views, discussions, etc in a table, and then you can query for those within the last 24 hours and then count them up to determine which were the most active topics. You can query for the different types of activities and weigh some of those more than others (like comments might be more valuable than likes or something).
Does that make sense?
Here's a good article on how you could move that stuff into Postgres as a function: http://sorentwo.com/2013/12/30/let-postgres-do-the-work.html
I should definitely do a screencast on this stuff.
Posted in Searchkick search_data not working
Hey Andrew, did you get this one figured out?
I know the feeling all too well. :)
Oh I gotcha, that should be much simpler.
I believe you'll need to override the Devise Registrations controller and just define the layouts in those methods.
# config/routes.rb
devise :users, controllers: { registrations: "users/registrations" }
# app/controllers/users/registrations_controller.rb
class Users::RegistrationController < Devise::RegistrationsController
layout "new_registration", only: [:new, :create]
layout "edit_registration", only: [:edit, :update]
end
Something like that should do the trick.
I would actually recommend not trying to modify this because that's how Rails generally works. The thing is that your form submits a PUT request to /users
when you edit your user, so when it fails, the request returns HTML and that's why your browser ends up on /users
instead of /users/edit
. Since it doesn't do a redirect in order to preserve all the variables, it has to keep the URL on /users in order to generate the next page that includes the errors on it.
For you to modify that, you'd be going against the way the routes work in Rails and so your solution would be kind of hacky. This does tend to feel a little weird in development when you're testing things, but when the app is live, you'll never notice it because you won't be typing in URLs direct hardly ever.
Does that make sense?
Posted in Verifying iOS in-app purchase receipts
Hey Michael,
I'm really curious about this as well. Do you know how the process of these purchase receipts work? How do you receive the receipt data? Do you get it in-app and then have to send it over to your server for verification?
Hey Jeramae,
Are you using jQuery autocomplete for the frontend? I wonder if that's having trouble on Safari or something. It isn't likely to be the server-side ElasticSearch or Searchkick stuff if it's working fine in other browsers.
Posted in What is the best way to handle omniauth
That's one of the tricky situations you have to handle with Twitter. I need to do a screencast on this, but the idea is pretty simple and here's a link to check out in the meantime: http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/
Basically you setup the OAuth process as normal, but if the user goes through it and doesn't return an email address, you have the add in an additional step to gather their email address and/or password.