Srdjan Cengic
2013-Nov-09 21:19 UTC
Creation of object which doesn''t have model, while creation need to create several entries in other
In application user can enter new *post* which contain *title*, *content*of the post and *category* of post. So creating new post will be through some simple html form with few fields. Now i don''t know where to put logic for creating new post for following reasons: Post(or posts collection) is object which is constructed from different tables, for example. @posts = User.joins(entries: [{storage: :vote}, :category]) .where("votes.count > ?", 0) .select("users.username AS username, storages.id AS storage_id, storages.title AS title, storages.content AS content, votes.count AS votes, categories.category_name AS category_name") .order("votes.count DESC") So when user create *new post* application must create new entries in different tables: 1.Create new entry in *entries* table. (id, user_id, category_id) 2. Create new entry in *storages* table.(id, title, content, entry_id) 3. Create new entry in *vote* table.(id, count, storage_id) In situation where *post* is model i can use something like resources: poststhen in posts controller through new and create i can create new post, *but what in situation like this where i don''t need posts controller nor post model?* So, question is: which place is more appropriate to put logic for creating new post? *Question1* My solution is to craete Storages controller with resource: storages, :only => [:new, :create] then through new and create of this controller to populate different tables in db? I''m forcing here only because i dont see any point of other CRUD actions here(like showing all or one storage), because i will not use storages individually but in conjunction with other tables. So from views/storages through new.html.erb and create.html.erb i can construct new *post*? *Question2* Another solution is to create Post controller which doesn''t have "corresponding" post model as i stated before. Here i''m guessing i can''t use restful routes(CRUD) because there is not :id of post? I only can make manually non-restful routes like: post ''posts/create/:title/:content/:category'' => ''posts#create'', :as => ''create_post'' then from params[:title], params[:content] and params[:category] to populate other tables. *Question3*I assume that i need tableless-model for post? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/28e83079-883c-4f45-a793-2e1e5d74741c%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.