I’m still a super rails noob, and trying to figure this out in relation to learning how to write controllers/models and where stuff should go.
Basically I have my models set up with a many-to-many mapping of API keys to users. There’s three models here, users, api_keys_users, and api_keys. I’ve got a view/controller setup for the users. But have avoided doing it for the api_keys and api_keys_users tables. Manually I can create a API key and map it to a user using SQL but now I want to set it up for generation via the view.
However I have no idea where the logic should go. Basically I want a “generate new api key” button on the show users page. This would create a unique entry in the api_key table. Then create an entry in the api_keys_users table with the id of the user and the id of the new key.
I suggest first working through some Rails tutorials.
railstutorial.org is good and is free to use online. Once you have
worked right through that, including doing all the exercises, then you
will be better placed to get going.
Ideally I’m viewing this as a fairly simple feature to add. Also I’m hoping this will help Mr solidify best practice for how to do things.
Where I’m getting confused is what should be creating the user/key entries. I could make this part of the options for creating a key( aka passing in a user-id) and failing if it doesn’t exist etc. Then creating the mapping on after-save for the key. Or I could implement this as its own controller, and put some of the logic in there.
Ideally I'm viewing this as a fairly simple feature to add. Also I'm hoping
this will help Mr solidify best practice for how to do things.
Where I'm getting confused is what should be creating the user/key entries.
I could make this part of the options for creating a key( aka passing in a
user-id) and failing if it doesn't exist etc. Then creating the mapping on
after-save for the key. Or I could implement this as its own controller, and
put some of the logic in there.
I would use the create action of the keys controller, since that is
what it is doing, if I understand correctly.